ವಿಕಿಪೀಡಿಯ
tcywiki
https://tcy.wikipedia.org/wiki/%E0%B2%AE%E0%B3%81%E0%B2%96%E0%B3%8D%E0%B2%AF_%E0%B2%AA%E0%B3%81%E0%B2%9F
MediaWiki 1.47.0-wmf.2
first-letter
ಮಾದ್ಯಮೊ
ವಿಸೇಸೊ
ಪಾತೆರ
ಬಳಕೆದಾರೆ
ಬಳಕೆದಾರೆ ಪಾತೆರ
ವಿಕಿಪೀಡಿಯ
ವಿಕಿಪೀಡಿಯ ಪಾತೆರ
ಫೈಲ್
ಫೈಲ್ ಪಾತೆರ
ಮಾದ್ಯಮೊವಿಕಿ
ಮಾದ್ಯಮೊವಿಕಿ ಪಾತೆರ
ಟೆಂಪ್ಲೇಟ್
ಟೆಂಪ್ಲೇಟ್ ಪಾತೆರ
ಸಕಾಯೊ
ಸಕಾಯೊ ಪಾತೆರ
ವರ್ಗೊ
ವರ್ಗೊ ಪಾತೆರ
ತಡ್ಯ
ತಡ್ಯ ಪಾತೆರ
ಕರಡು
ಕರಡು ಪಾತೆರ
TimedText
TimedText talk
ಮೋಡ್ಯೂಲ್
ಮೋಡ್ಯೂಲ್ ಪಾತೆರ
Event
Event talk
ಗಜಲಿಂಬೆ
0
4142
360864
281040
2026-05-18T09:06:15Z
ChiK
1136
Added {{[[Template:Unreferenced|Unreferenced]]}} tag
360864
wikitext
text/x-wiki
{{Unreferenced|date=ಮೇ ೨೦೨೬}}
[[ಫೈಲ್:Gaja limbe.jpg|thumb]]
{{Merge |ಗಜಲಿಂಬೆ|}}
ಲಿಂಬೆಪುಳಿಟ್ಟೇ ಮಲ್ಲ ಜಾತಿದೆಕ್ಕ್ '''ಗಜಲಿಂಬೆ ಪಂಡ್ದ್''' ಪನ್ಪೆರ್.ಉಂದು ಮುಸುಂಬಿದಾತ್ ಮಲ್ಲ ಉಪ್ಪುಂಡು. ಎಲ್ಯ ಲಿಂಬೆದ ಮರ ಮಿತ್ತ್ ಬುಲೆಂಡ ಗಜಲಿಂಬೆ ಅಡ್ಡೊಗು ಬುಲೆದ್ ನೆಲಟ್ಟೇ ಅಟಾರ ಆದ್ ಬುಲೆವುಂಡು.
== ಉಪಯೋಗ ==
ಗಜಲಿಂಬೆ ಲಿಂಬೆಪುಳಿತ್ತಲೆಕ್ಕನೇ ಉಪಯೋಗ ಆಪುಂಡು. ಆಂಡ ನೆತ್ತ ರಸ ದೆಪ್ಪರೆ ಒಂತೆ ಬಂಗ. ದಾಯೆಪಂಡ ನೆತ್ತ ಚೋಲಿ ಬಾರಿ ದಪ್ಪ. ಉಂದು ಉಪ್ಪಡ್ಗ್ ಬಾರಿ ಎಡ್ಡೆ. ಲಿಂಬೆನ್ ಒಂತೆ ಬೆಯ್ಪಾದ್ ಚೌಲಿ ಆಯಿಬುಕ್ಕೊ ಗಡಿ ಮಲ್ತ್ದ್ ಉಪ್ಪಡ್ ಪಾಡುವೆರ್. ಬೆಯ್ಪಾದ್ ತುಂಡು ಮಲ್ತ್ ನುಂಗಾದ್ಲ ಉಪ್ಪಡ್ ಪಾಡುವೆರ್.
== ದೈ ಮಲ್ಪುನ ಕ್ರಮ ==
ನೆತ್ತ ದೈ ಮಲ್ಪೆರೆ ಬಾರಿ ಸುಲಭ. ಉಂದು ನೆಲಟ್ಟ್ ಪರಡೊಂದು ಬುಲೆವುನೆಡ್ದ್ ಗಿಡತ್ತ ಗೆಲ್ಲ್ ನೆಲಕ್ಕ್ ತಾಗ್ದ್ ಇತ್ತ್ಂಡ ಅಲ್ಪನೆ ಬೇರ್ ಬರ್ಪುಂಡು. ಬೇರ್ ಬೈದಿನ ಗೆಲ್ಲ್ ದೆತ್ತ್ದ್ ನೆಡ್ಂಡ ದೈ ಮಲ್ಪೊಲಿ.
== ಲಿಂಬೆಪುಲಿ - ಚಿತ್ರ ದರ್ಶಿನಿ ==
<gallery>
File:Limetten - Stadtmarkt Augsburg Juni 2015-8618.jpg|Limetten - Stadtmarkt Augsburg Juni 2015-8618
File:Andahuaylas Peru- Lime seller.jpg|Andahuaylas Peru- Lime seller
File:Green Lemon.jpg|Green Lemon
File:Aiyu jelly by brappy! in Taipei.jpg|Aiyu jelly by brappy! in Taipei
ಫೈಲ್:Sam's Anchor Cafe - April 2019 - Stierch 13.jpg|Sam's Anchor Cafe - April 2019 - Stierch
ಫೈಲ್:Lemon tree in Palestine.jpg|Lemon tree in Palestine
ಫೈಲ್:Lemon tree Noleta.jpg|Lemon tree Noleta
ಫೈಲ್:Lemon tree (4544462965).jpg|Lemon tree
</gallery>
== ಉಲ್ಲೇಕೊಲು ==
{{Reflist}}
{{ಪರ್ಂದ್ಲು}}
[[ವರ್ಗೊ:ದಯಿಕುಲು]]
[[ವರ್ಗೊ:ಪರ್ಂದ್]]
smvpm6uuw0d89axogrcwav6edzaa22c
360865
360864
2026-05-18T09:06:45Z
ChiK
1136
360865
wikitext
text/x-wiki
{{Unreferenced|date=ಮೇ ೨೦೨೬}}
[[ಫೈಲ್:Gaja limbe.jpg|thumb]]
ಲಿಂಬೆಪುಳಿಟ್ಟೇ ಮಲ್ಲ ಜಾತಿದೆಕ್ಕ್ '''ಗಜಲಿಂಬೆ ಪಂಡ್ದ್''' ಪನ್ಪೆರ್.ಉಂದು ಮುಸುಂಬಿದಾತ್ ಮಲ್ಲ ಉಪ್ಪುಂಡು. ಎಲ್ಯ ಲಿಂಬೆದ ಮರ ಮಿತ್ತ್ ಬುಲೆಂಡ ಗಜಲಿಂಬೆ ಅಡ್ಡೊಗು ಬುಲೆದ್ ನೆಲಟ್ಟೇ ಅಟಾರ ಆದ್ ಬುಲೆವುಂಡು.
== ಉಪಯೋಗ ==
ಗಜಲಿಂಬೆ ಲಿಂಬೆಪುಳಿತ್ತಲೆಕ್ಕನೇ ಉಪಯೋಗ ಆಪುಂಡು. ಆಂಡ ನೆತ್ತ ರಸ ದೆಪ್ಪರೆ ಒಂತೆ ಬಂಗ. ದಾಯೆಪಂಡ ನೆತ್ತ ಚೋಲಿ ಬಾರಿ ದಪ್ಪ. ಉಂದು ಉಪ್ಪಡ್ಗ್ ಬಾರಿ ಎಡ್ಡೆ. ಲಿಂಬೆನ್ ಒಂತೆ ಬೆಯ್ಪಾದ್ ಚೌಲಿ ಆಯಿಬುಕ್ಕೊ ಗಡಿ ಮಲ್ತ್ದ್ ಉಪ್ಪಡ್ ಪಾಡುವೆರ್. ಬೆಯ್ಪಾದ್ ತುಂಡು ಮಲ್ತ್ ನುಂಗಾದ್ಲ ಉಪ್ಪಡ್ ಪಾಡುವೆರ್.
== ದೈ ಮಲ್ಪುನ ಕ್ರಮ ==
ನೆತ್ತ ದೈ ಮಲ್ಪೆರೆ ಬಾರಿ ಸುಲಭ. ಉಂದು ನೆಲಟ್ಟ್ ಪರಡೊಂದು ಬುಲೆವುನೆಡ್ದ್ ಗಿಡತ್ತ ಗೆಲ್ಲ್ ನೆಲಕ್ಕ್ ತಾಗ್ದ್ ಇತ್ತ್ಂಡ ಅಲ್ಪನೆ ಬೇರ್ ಬರ್ಪುಂಡು. ಬೇರ್ ಬೈದಿನ ಗೆಲ್ಲ್ ದೆತ್ತ್ದ್ ನೆಡ್ಂಡ ದೈ ಮಲ್ಪೊಲಿ.
== ಲಿಂಬೆಪುಲಿ - ಚಿತ್ರ ದರ್ಶಿನಿ ==
<gallery>
File:Limetten - Stadtmarkt Augsburg Juni 2015-8618.jpg|Limetten - Stadtmarkt Augsburg Juni 2015-8618
File:Andahuaylas Peru- Lime seller.jpg|Andahuaylas Peru- Lime seller
File:Green Lemon.jpg|Green Lemon
File:Aiyu jelly by brappy! in Taipei.jpg|Aiyu jelly by brappy! in Taipei
ಫೈಲ್:Sam's Anchor Cafe - April 2019 - Stierch 13.jpg|Sam's Anchor Cafe - April 2019 - Stierch
ಫೈಲ್:Lemon tree in Palestine.jpg|Lemon tree in Palestine
ಫೈಲ್:Lemon tree Noleta.jpg|Lemon tree Noleta
ಫೈಲ್:Lemon tree (4544462965).jpg|Lemon tree
</gallery>
== ಉಲ್ಲೇಕೊಲು ==
{{Reflist}}
{{ಪರ್ಂದ್ಲು}}
[[ವರ್ಗೊ:ದಯಿಕುಲು]]
[[ವರ್ಗೊ:ಪರ್ಂದ್]]
4frmt2shegj39wowqqxz46s7s7g72l7
ಜಂಬು ನೇರಳೆ
0
4239
360863
350173
2026-05-18T09:04:21Z
ChiK
1136
Reference edited with [[mw:ProveIt|ProveIt]] #proveit
360863
wikitext
text/x-wiki
'''ಜಂಬು ನೇರಳೆ'''<ref>{{Cite web |url=https://kannada.oneindia.com/column/vichitranna/2006/020506jambu-fruit.html |title=ಜಂಬೂದ್ವೀಪದಲ್ಲೂ ಹವಾಯಿದ್ವೀಪದಲ್ಲೂ ಬೆಳೆವ ಹಣ್ಣು! |date=2 May 2006 |accessdate=2026-05-18 |website=https://kannada.oneindia.com |last=Staff |language=kn}}http://kannada.oneindia.com/column/vichitranna/2006/020506jambu-fruit.html</ref> ಒಂಜಿ ರೀತಿದ ಪರ್ಂದ್ (ಹಣ್ಣು). ಉಂದೆಕ್ [[ಸಂಸ್ಕೃತ ಬಾಸೆ|ಸಂಸ್ಕ್ರತೊ]]ಡ್ ಜಂಬು, [[ಹಿಂದಿ ಬಾಸೆ|ಹಿಂದಿ]]ಡ್ ಜಾಮೂನ್, [[ಇಂಗ್ಲಿಷ್ ಬಾಸೆ|ಇಂಗ್ಲಿಸ್ಡ್]] ಬ್ಲ್ಯಾಕ್ ಬೆರಿ ಪನ್ಪೆರ್. ಉಂದ್ ಪೂರ ಬಗೆತ ಹವಾಗುಣೊಟ್ಲ ಬುಲೆಯುಂಡ್. ವರುಣ ದೇವೆರ್ ಜಂಬು ಮರವಾದ್ ಪರಿವರ್ತನೆ ಆಯೆರ್ ಪನ್ಪಿನ ಉಲ್ಲೇಕೊ ಉಂಡ್. ಮರತ ಎತ್ತರ [[ಹವಾಮಾನ]] ಬುಕ್ಕೊ ಮಣ್ಣ್ದ ಪಲವತ್ತತೆಗ್ ಅನುಗುಣವಾದ್ ೧೫-೧೮ ಅಡಿ ಉಪ್ಪುಂಡು. ಕೈಯ್ಯದೇವ, ಭಾವಮಿಶ್ರ, ರಾಜ ನರಹರಿನ ಪ್ರಕಾರೊ ಜಂಬುನೇರಳೆಡ್ ೩ ವಿಧ ಉಂಡು. ಅವ್ವು ಪಂಡ ರಾಜ ಜಂಬು, ಕಾಕ ಜಂಬು, ಜಲ ಜಂಬು, ಉಂದು ಕಾಯಿ ಉಪ್ಪನಗ ಪಚ್ಚೆ ಬನ್ನೊ ಇತ್ತ್ದ್ ಬುಕ್ಕೊ ಗುಲಾಬಿ ಬನ್ನೊಗು ತಿರುಗುದ್ ಬುಕ್ಕೊ ಕಪ್ಪು ಬನ್ನೊಗು ತಿರ್ಗುಂಡ್. ಉಂದು ಮರ್ದ್ದ ಗುಣೊನ್ಲಾ ಹೊಂದ್ದ್ ಉಂಡು.
== ಉಲ್ಲೇಕೊಲು ==
{{Reflist}}
{{ಪರ್ಂದ್ಲು}}
[[ವರ್ಗೊ:ಪರ್ಂದ್]]
042fx2rqwc2dhb0gssd3v43dpkataia
ಬಚ್ಚಂಗಾಯಿ
0
4513
360862
281793
2026-05-18T09:03:39Z
ChiK
1136
Add: date, title. Changed bare reference to CS1/2. | [[:en:WP:UCB|Use this tool]]. [[:en:WP:DBUG|Report bugs]]. | #UCB_Gadget #proveit
360862
wikitext
text/x-wiki
[[File:Water Melon Polali Mangaluru.jpg|thumb|ಪೊಳಲಿದ ಬಚ್ಚಂಗಾಯಿ]]
'''ಬಚ್ಚಂಗಾಯಿನ್''' ಕನ್ನಡಡ್ [[:kn:ಕಲ್ಲಂಗಡಿ|ಕಲ್ಲಂಗಡಿ]] (ಸಿಟ್ರಲಸ್ ಲನಾಟಸ್ (ಟೂನ್ಬಾರಿಯ) ಪಂದ್ ಲೆಪ್ಪುವೆರ್. ಬಚ್ಚಂಗಾಯಿದ ಮೂಲೊನು ತೂಂಡ ಉಂದು [[ಆಫ್ರಿಕಾ]]ದ ದಕ್ಷಿಣ ಭಾಗೋದ. ಉಂದು ಬಲ್ಲ್ (ಬೂರು)ಡ್ ಪೂ ಕಾಯಿ ಬುಡುಪುನ ದಯಿ. ಇಂದೆತ ಪರ್ಂದ್ನ್ ಸಸ್ಯಶಾಸ್ತ್ರಜ್ಞೆರ್ (ದಪ್ಪೋತ ಚೋಲಿ (ಬೀಜಕೋಶ) ಬುಕ್ಕ ತಿರುಳು ನಡುಟ್ಟು ಉಪ್ಪುನ ಪರಂದು ಪಂಡ್ದ್ ಗುರ್ತ ಮಲ್ದೆರ್. ಉಂದ್ [[:en:Cucurbita|ಕುಕುರ್ಬೆಟೀಸೀ]] ಕುಟುಮೊಗ್ ಸೇರ್ದಿನ ಬುಲೆ.<ref>http://cuke.hort.ncsu.edu/cucurbit/wehner/articles/book14.pdf</ref>
[[File:Water melon.jpg|thumb|Watermelon]]
== ವಿವರಣೆ ==
* ಉಂದ್ ನೆಲೊಟು ಪರಡುನ ಬೂರು. ಇಂದೆತ ಮುದೆಲ್ಡ್ ಎಲ್ಯೆಲ್ಯ ರೋಮ ಉಪ್ಪುಂಡು. ಅಗೆಲ ಇರೆಕುಲು. ಎಲ್ಯ ದಂಟ್. ದಂಟ್ದ ಮರ್ಗಿಲ್ಡ್ ಪೂ ಬುಡ್ಪುಂಡ್. [[ಮಂಜೊಲ್]] ರಂಗ್ದ ಎಲ್ಯೆಲ್ಯ ಪೂಕುಲು ಒಂಜೊಂಜೆ ಉಪ್ಪುಂಡ್.
* ಪೂಕ್ಲೆಡ್ ಆನ್ ಪೊಣ್ಣು ಪಂಡ್ದ್ ಎತ್ವಾಸ್ ಉಪ್ಪುಂಡ್. ರಡ್ಡ್ ನಮೂನೆದ ಪೂಕ್ಲೆಡ್ಲ ಐನ್ ಎಸಲ್ ಉಪ್ಪುಂಡ್. ಆಂಡ ಪೊಣ್ಣು ಪೂಟ್ [[ಅಂಡಾಶಯ]] ಉಪ್ಪುಂಡ್. ಅಂಡಾಶಯೊಡ್ ಅಂಡಕುಲು ಉಪ್ಪುವ.
* ರಡ್ಡೆರ್ದ್ ಹೆಚ್ಚ ಕಿಲೊ ತೂಕುನ ಕಾಯಿಲು ಪಚ್ಚೆ ರಂಗ್ಡುಪ್ಪುವ. ಕೆಲವು ಬುಲೆಕ್ಲೆಡ್ ಬೊಲ್ದು ಪಟ್ಟಿ ಪಟ್ಟಿ ಉಪ್ಪುಂಡ್. ಉಲಯಿದ ಬೊಂಡು [[ಕೆಂಪು]] ರಂಗ್. [[ಕುಡ್ಲ]]ದ ಪುರಲ್ (ಪೊಳಲಿ) ಪನ್ಪಿನ ಜಾಗೆಡ್ ಬುಲೆಪಿನ ಬಚ್ಚಂಗಾಯಿ ಕಡು [[ಪಚ್ಚೆ]] ರಂಗ್ದ.
== ಬುಲೆಪಿನ ಕ್ರಮ ==
* ಬಚ್ಚಂಗಾಯಿ ಬುಲೆಯೆರೆ ಬೆಪ್ಪು ಹವೆ ಬೋಡು. ಸುಮಾರ್ ೮೦ ಡಿಗ್ರಿ ಉಷ್ಣತೆ ಬೋಡು. ತಂಪು ಹವೆಟ್ ಬಿತ್ತ್ ಕೊಡಿಯುಜಿ ಬುಕ್ಕೊ ಬೂರುಗ್ ಸೀಕ್ ಬರ್ಪುಂಡ್.ಉಂದ್ ಅರೆಗಾಲೊದ ಬುಲೆ. ಬೆಚ್ಚ ಹವೆಟ್ ಬುಲೆಯಿನ ಕಾಯಿ ಮಸ್ತ್ ಸೀಪೆ ಉಪ್ಪುಂಡ್.<ref>{{Cite web |url=https://www.almanac.com/plant/watermelons |title=Growing Watermelons: How to Plant and Grow Watermelons at Home {{!}} The Old Farmer's Almanac |date=13 February 2026 |accessdate=2026-05-18 |website=www.almanac.com |language=en}}</ref>
* ತಂಪು ಪ್ರದೇಶದಕ್ಲು ಇಲ್ಲ್, ಕಟ್ಟನೊದ ಉಲಯಿ ಬಿತ್ತ್ ಬಿತ್ತ್ದ್ ದಯಿ ಬಲ ಆಯಿ ಬುಕ್ಕೊ ಸದಾರ್ನ ಒಂಜಿ ತಿಂಗೊಲ್ರ್ದ್ ಬುಕ್ಕೊ ಪಿದಯಿ ನಡೊಡು.
* ಬಿತ್ತೆರೆ ದುಂಬು [[ಮಣ್ಣ್]] ಸರಿಯಾಯಿನ ಈಟ್ ಪಾಡ್ದ್ ತಯಾರ್ ಮಲ್ಪೊಡು.<ref>{{cite web | title=How to Prepare the Soil for Planting Watermelons | date=27 September 2012 | url=http://homeguides.sfgate.com/prepare-soil-planting-watermelons-45346.html }}</ref>
* ಬಚ್ಚಂಗಾಯಿ ಬುಲೆಯೆರೆ ಕಂಡೊದ [[ಪೊಯ್ಯೆ]] ಮಣ್ಣ್ ಎಡ್ಡೆ. [[ಸುದೆ]]ತ ಸಾಲ್ಡ್ ಕಂಡೊಲೆಡ್ ಇಂದೆನ್ ಹೆಚ್ಚಾದ್ ಬುಲೆಪುವೆರ್. ಆಂಡ ಮುದೆಲ್ಡ್ ನೀರ್ ಉಂತೆರೆ ಬಲ್ಲಿ.
* ಓಲಾಂಡಲ ದೆತ್ತ್ದ್ ನಡ್ಪುನಾಂಡ ಒಂಜಿ ದಯಿರ್ದ್ ನನೊಂಜಿ ದಯಿಕ್ ಸುಮಾರ್ ಆಜಿ ಅಡಿಕೋಲು ದೂರ ಅಂತರ ಉಪ್ಪೊಡ್.
* ಪನಿ ಪನಿ ನೀರ್ ತಲ್ತೊಂದುಪ್ಪೊಡು.
== ಉಪಯೋಗ ==
* ಈ ಪರ್ಂದ್ ಅರೆಗಾಲೊಡ್ ದೊಂಬುದ ಹವೆಟ್ ತಿನೆರೆಗ್ ಹೆಚ್ಚ ಗಲಸುವೆರ್. ಇಂದೆಟ್ [[ನೀರ್|ನೀರ್ದ]] ಅಂಸೊ ಎಚ್ಚ ಇತ್ತಿನೆಡ್ದಾತ್ರ ಬಾಜೆಲ್ಗ್ ಎಡ್ಡೆ.
* ಇಂದೆತ ರಸೊಕ್ [[ಸಕ್ಕರೆ]] ಪಾಡ್ದ್ ಪರ್ಪೆರ್.
* ಕೆಲವು ಕೋಡಿಡ್ ಇಂದೆತ ಲತ್ತ್ ಕಾಯಿನ್ ಕಜ್ಪು ಕಾಯಿ ಆದ್ ಗಲಸುವೆರ್.
* ಪರ್ಂದ್ ಬಚ್ಚಂಗಾಯಿದ ದಪ್ಪ ಓಡುನ್ [[ಕಜಿಪು]] ಮಲ್ಪುವೆರ್.
* ಇಂದೆತ [[ಬಿತ್ತ್]]ದ ಬೊಂಡುನ್ ಸೀಪೆ ತಿನೆರೆಲೆಗ್ ಅಲ್ಂಕಾರೊಗ್, ಬುಕ್ಕೊ ರುಚಿಕ್ ಗಲಸುವೆರ್.
== ಮರ್ದ್ದ ಅಂಶೊಲು ==
* ಬಚ್ಚಂಗಾಯಿಡ್ [[ನೀರ್]] ಬುಕ್ಕೊ [[ಸಕ್ಕರೆ]] ಅಂಸೊಲು ಜಾಸ್ತಿ. ಅಂಚಾದ್ ಬಾಜೆಲ್ಗ್ ಬುಕ್ಕೊ ನಿತ್ರಾಣ ಆನಗ ತಿಂದ್ಂಡ ತ್ರಾಣ ಬರ್ಪುಂಡು.<ref>{{cite web | title=Watermelon: Health benefits, nutrition, and risks | date=18 December 2019 | url=http://www.medicalnewstoday.com/articles/266886.php }}</ref>
* ಇಂದೆಟ್ ವಿಟಮಿನ್ದ ಅಂಸೊಲು ಬೋಡಾಯಿನಾತ್ ಉಂಡು.ಕ್ಯಾಲೊರಿ ಕಮ್ಮಿ ಉಂಡು.
* ತೂಕ ಕಡಿಮೆ ಮಲ್ಪೆರೆ ಈ ಪರ್ಂದ್ನ್ ನಿತ್ಯೊ ದೆತೊನೊಲಿ.
* ವಿಟಮಿನ್ 'ಸಿ' ಹೆಚ್ಚ ಇತ್ತಿನೆಡ್ದಾತ್ರ ಈ ಪರ್ಂದ್ ಆಸ್ತಮ ಸೀಕ್ದಕುಲುಲ ತಿನೊಲಿ.
* [[ನೆತ್ತೆರ್|ನೆತ್ತೆರ್]]ದ ಒತ್ತಡೊನ್ ಸಮಸ್ಥಿತಿಡ್ ದೀದ್ ಮನಸ್ನ್ ಶಾಂತ ಮಲ್ಪುಂಡ್.
== ಉಲ್ಲೇಕೊಲು ==
{{Reflist}}
{{ಪರ್ಂದ್ಲು}}
[[ವರ್ಗೊ:ಪರ್ಂದ್]]
[[ವರ್ಗೊ:ತುಳು ಜಾನಪದ]]
aftmo4qkqwl9yxxqer0urhz2bkbdqbx
ವಿಕಿಪೀಡಿಯ:ಚಾವಡಿ
4
4774
360821
360467
2026-05-17T13:02:36Z
MediaWiki message delivery
407
/* Call for Applications: TTT 2026 (Deadline Extended to 20 May) */ಪೊಸ ವಿಭಾಗ
360821
wikitext
text/x-wiki
{{ಚಾವಡಿ ಪುಟೊ header|ಪಾತೆರಕತೆ|alpha=yes|'''ಚಾವಡಿ''' [[ತುಳು ಬಾಸೆ|ತುಳು]] ವಿಕಿಪೀಡಿಯೊದ ಕಾರ್ಯೊನೀತಿಲೆನ ಬಗೆಟ್, ತಾಂತ್ರಿಕ ದೋಸೊಲೆನ ಬಗೆಟ್, ಅಂಚನೆ ಕೆಲಸೊ ಕಾರ್ಯೊಲೆನ ಬಗೆಟ್ ಪಟ್ಟಾಂಗ ಪಾಡುನ ಮೀಚಿಲ್ ಪುಟೊ.
*ಸಾದ್ಯೊ ಆಯಿನಾತ್ ಲೇಕನೊಲೆಗ್ ಸಂಬಂದಿಸಯಿನ ಪಟ್ಟಾಂಗೊಲೆನ್ ಅವ್ವೇ ಲೇಕನೊದ ಪಟ್ಟಾಂಗೊ ಪುಟೊಡು ಸೇರಾಲೆ.
*ಅವ್ವೇ ಲೇಕನೊದ ಪಟ್ಟಾಂಗೊ ಪುಟೊಡು ಲೇಕನೊಗು ಸೇರಾಯರ ಬೋಡಾಯಿನ ಮಾಹಿತಿದ ಬಗೆಟ್ ಅಯಿತ ಮಿತ್ತ್ಡ್ ಆವೊಡಾಪುನ ಬೇಲೆದ ಬಗೆಟ್ ಬರೆದ್ ದೀಡ್ಲೆ.
*ಇತ್ತೇ ಇಪ್ಪುನ ಟೆಂಪ್ಲೇಟ್ಲೆನ್ ಸಾದ್ಯೊ ಆಯಿನಾತ್ ಗಲಸ್ಲೆ. ಪೊಸ ಟೆಂಪ್ಲೇಟ್ಲೆನ್ ಸೇರಾಪುನೆಡ್ದ್ ದುಂಬು ಒರೊ ನಾಡ್ದ್ ತೂಲೆ.
*ಇಸೇಸೊ ಪುಟೊಲೆನ್ ಸಾದ್ಯೊ ಆಯಿನಾತ್ ಗಲಸ್ಲೆ. ಚಿತ್ರೊಲೆನ್ ಅಪ್ಲೋಡ್ ಮಲ್ಪುನ ಬಗೆಟ್ ವಿಕಿಪೀಡಿಯ ಪಾಲಿಸಿಲೆನ್ (ಕಾರ್ಯೊನೀತಿಲೆನ್) ತಯಾರ್ ಮಲ್ಪೊಡಾತೆ.
*ಇಂಗ್ಲಿಸ್ ವಿಕಿಪೀಡಿಯೊಡ್ದ್ ಚಿತ್ರೊಗಾತ್ರೊ ಇಪ್ಪುನ ಲೈಸೆನ್ಸ್ಲೆನ ಟೆಂಪ್ಲೇಟ್ಲೆನ್ ತುಳು ವಿಕಿಪೀಡಿಯೊಡು ನಕಲ್ ಮಲ್ಪೊಡು. ಆಸಕ್ತಿ ಇತ್ತಿನಕುಲು ದುಂಬುಗು ಬತ್ತ್ದ್ ಪಾಲ್ ಪಡೆವೊನ್ಲೆ.
|ವಿಪಿ:ಚಾ|WP:VPPOL}}
{{Archive box|
{{Search box|root=ವಿಕಿಪೀಡಿಯ:ಚಾವಡಿ|search-width=20|search-button-label=ಪತ್ರಾಗಾರೊಡ್ ನಾಡ್ಲೆ|search-break=yes}}
*[[ವಿಕಿಪೀಡಿಯ:ಚಾವಡಿ ಪತ್ರಾಗಾರೊ|ಪಿರಾಕ್ತ ಚಾವಡಿದ ಪಾತೆರಕತೆತ ಪತ್ರಾಗಾರೊ]]
}}
__NEWSECTIONLINK__
__TOC__<div id="below_toc"></div>
[[Category:ವಿಕಿಪೀಡಿಯ ಚಾವಡಿ]]
[[Category:ವಿಕಿಪೀಡಿಯ ಲೇಸ್ಲು]]
{{ಬಳಕೆದಾರೆ:MABot/config
|archive = ವಿಕಿಪೀಡಿಯ:ಚಾವಡಿ ಪತ್ರಾಗಾರೊ/%(year)d
|algo = old(30d)
|counter = 1
|archiveheader =
|minthreadstoarchive = 1
|minthreadsleft = 2
|key = c8ef14985778fd1d5adc8ebcf551ddce
}}</noinclude>
<!-- Please do not change the key value above -->
<!--- don't write above/ಈ ಮಿತ್ತುಡ್ ಒವ್ವೆ ಬರವು ಬರೆವೊಡ್ಚಿ --->
{{clear}}
== ಮುಕ್ಯೊ ಪುಟೊಟು ಸೇರಾಯರೆ ==
ಮುಕ್ಯೊ ಪುಟೊಟ್ ಸುದ್ದಿಲೆನ ಇಬಾಗೊ ಸೇರ್ಪದೆ ಮಲ್ತ್ದ್ ಕೆಲವೊಂಜಿ ಬದಲಾವನೆದ ಸ್ವರೂಪೊಲೆನು ಪಟ್ಟೊಂದುಲ್ಲೆ. ಇಂದೆಕ್ ನಿಕ್ಲೆನ ಅಬಿಪ್ರಾಯೊ ತೆರಿಪಲೆ. [[ವಿಕಿಪೀಡಿಯ:ಮುಖ್ಯ ಪುಟ/ಕಲ್ಪುನಕಳ]]. [[ಬಳಕೆದಾರೆ:ChiK|ChiK]] ([[ಬಳಕೆದಾರೆ ಪಾತೆರ:ChiK|ಪಾತೆರ್ಲೆ]]) ೧೭:೩೬, ೧೪ ಎಪ್ರಿಲ್ ೨೦೨೬ (IST)
* ಬೇತೆ ವಿಕಿ ಪುಟತಂಚನೆ ತುಳುತ ಮುಕ್ಯೊಪುಟೊಲಾ ಎಡ್ಡೆ ತೋಜೊಡುಂದು ಈ ಮಲ್ಪುನ ಬೇಲೆಗ್ ಎನ್ನ {{support}} ಉಂಡು. --[[ಬಳಕೆದಾರೆ:Vishwanatha Badikana|Vishwanatha Badikana]] ([[ಬಳಕೆದಾರೆ ಪಾತೆರ:Vishwanatha Badikana|ಪಾತೆರ್ಲೆ]]) ೧೦:೫೧, ೧೭ ಎಪ್ರಿಲ್ ೨೦೨೬ (IST)
*ಎನ್ನ ಒಪ್ಪಿಗೆ ಉಂಡು- [[ಬಳಕೆದಾರೆ:Bharathesha Alasandemajalu|Bharathesha Alasandemajalu]] ([[ಬಳಕೆದಾರೆ ಪಾತೆರ:Bharathesha Alasandemajalu|ಪಾತೆರ್ಲೆ]]) ೦೮:೦೨, ೨೧ ಎಪ್ರಿಲ್ ೨೦೨೬ (IST)
: {{done}}. [[ಬಳಕೆದಾರೆ:ChiK|ChiK]] ([[ಬಳಕೆದಾರೆ ಪಾತೆರ:ChiK|ಪಾತೆರ್ಲೆ]]) ೦೯:೩೭, ೨೧ ಎಪ್ರಿಲ್ ೨೦೨೬ (IST)
== Meeting Invitation: Karavali Wikimedians User Group (KWUG) ==
'''Namaskara!'''
You are cordially invited to the upcoming online meeting of the Karavali Wikimedians User Group. We will be discussing key projects, including the 10th-anniversary celebrations for Tulu Wikipedia and our cultural heritage campaigns.
'''Meeting Details:''' <br/>
📅 Date: Thursday, 23 April 2026 <br/>
⏰ Time: 07:30 PM (IST) <br/>
📍 Venue: Google Meet (Online) <br/>
🔗 Meeting Link: https://meet.google.com/xgs-fodf-ouy
'''Agenda:''' <br/>
Wiki Loves Tuluvas: Living and Cultural Heritage campaign. <br/>
Tulu Wikipedia 10th Anniversary: Planning the milestone celebration. <br/>
In-person Meeting: Scheduling our next physical gathering. <br/>
GLAM Activity: Updates on gallery and library collaborations. <br/>
Open Discussion: Other community matters.
Your participation and ideas are vital to the growth of our community. See you there...
'''More:''' <br/>
https://meta.wikimedia.org/wiki/Karavali_Wikimedians/Meetups/Online_Meetup_23_April_2026
'''On behalf''', <br/>
Karavali Wikimedians
<!-- Message sent by User:ChiK@metawiki using the list at https://meta.wikimedia.org/w/index.php?title=Karavali_Wikimedians/Events/delivery_list&oldid=30440036 -->
== ತುಳುಟು ಅಂಕೆನ್ ಗಳಸುನ ಬಗೆಟ್ ==
ತುಳು ವಿಕಿಪೀಡಿಯಾಡ್ '''ಕನ್ನಡ ಅಂಕೆ''' ೦೧೨೩೪೫೬೭೮೯ ಅತ್ತಂಡ '''ಇಂಗ್ಲಿಸ್ ಅಂಕೆ''' 0123456789 ಇಂಚ ಗಳಸೊಂದುಲ್ಲೊ. ಈ ಬಗೆಟ್ ಸಮುದಾಯೊದಕ್ಲೆನ ಅಬಿಪ್ರಾಯೊ ಬೋಡು. ಮಸ್ತ್ ಲೇಕನೊಲೆಡ್ ಈ ರಡ್ಡೆನ್ಲಾ ಗಳಸೊಂದುಲ್ಲೊ. ತಾಂತ್ರಿಕವಾದ್ ಸಮಸ್ಯೆ ಉಂಡಾಂಡ ನಿರ್ವಾಹಕೆರ್ ಪನೊಡು.--[[ಬಳಕೆದಾರೆ:Vishwanatha Badikana|Vishwanatha Badikana]] ([[ಬಳಕೆದಾರೆ ಪಾತೆರ:Vishwanatha Badikana|ಪಾತೆರ್ಲೆ]]) ೧೭:೫೪, ೨೩ ಎಪ್ರಿಲ್ ೨೦೨೬ (IST)
== Request for comment (global AI policy) ==
<bdi lang="en" dir="ltr" class="mw-content-ltr">
Apologies for writing in English. {{int:Please-translate}}
A [[:m:Requests for comment/Artificial intelligence policy|request for comment]] is currently being held to decide on a global AI policy. {{int:Feedback-thanks-title}}
[[ಬಳಕೆದಾರೆ:MediaWiki message delivery|MediaWiki message delivery]] ([[ಬಳಕೆದಾರೆ ಪಾತೆರ:MediaWiki message delivery|ಪಾತೆರ್ಲೆ]]) ೦೬:೨೮, ೨೬ ಎಪ್ರಿಲ್ ೨೦೨೬ (IST)
</bdi>
<!-- Message sent by User:Codename Noreste@metawiki using the list at https://meta.wikimedia.org/w/index.php?title=Distribution_list/Global_message_delivery&oldid=30424282 -->
== Call for Applications: TTT 2026 (Deadline Extended to 20 May) ==
''<small>Apologies for writing in English. Please feel free to translate this into your language.</small>''
Hello everyone,
We hope you are doing well.
We would like to share that applications for the [[:m:IIITH-OKI/Train the Trainer Program/2026|Train the Trainer (TTT) 2026]] program are currently open. TTT is a capacity-building initiative aimed at supporting Wikimedians in developing training, facilitation, and leadership skills.
We are happy to inform you that the scholarship application deadline has been [[:m:IIITH-OKI/Train the Trainer Program/2026/Scholarship|extended until 20 May 2026]]. We are still receiving applications and encourage interested community members, especially emerging leaders, to [https://docs.google.com/forms/d/17eq6lJNCTVBoKRqz5IdSCiYWv-eHBrYRnx1wXfncwLI/viewform?edit_requested=true&pli=1 apply].
We also request your support in sharing this opportunity within your communities and networks, so that it can reach a wider and more diverse group of participants.
Thank you for your continued support. '''OKI (IIIT-H)''' [[ಬಳಕೆದಾರೆ:MediaWiki message delivery|MediaWiki message delivery]] ([[ಬಳಕೆದಾರೆ ಪಾತೆರ:MediaWiki message delivery|ಪಾತೆರ್ಲೆ]]) ೧೮:೩೨, ೧೭ ಮೇ ೨೦೨೬ (IST)
<!-- Message sent by User:Nitesh (OKI)@metawiki using the list at https://meta.wikimedia.org/w/index.php?title=User:Nitesh_Gill/lists/Indic_VPs&oldid=30361720 -->
gq0ahmv1elg08qekawv2lxojzr1i7ij
ಮೋಡ್ಯೂಲ್:Lang
828
7281
360848
353003
2026-05-12T23:20:12Z
en>Andrybak
0
make_error_span, make_error_msg: use CSS variable `--color-error` to improve readability
360848
Scribunto
text/plain
--[=[
Lua support for the {{lang}}, {{langx}}, {{lang-??}}, and {{transliteration}} templates and replacement of various supporting templates.
]=]
require('strict');
local getArgs = require ('Module:Arguments').getArgs;
local unicode = require ("Module:Unicode data"); -- for is_Latin() and is_rtl()
local yesno = require ('Module:Yesno');
local sandbox = (mw.getCurrentFrame():getTitle():match ('/sandbox') or ''); -- when called from a sandbox template or module load sandbox data and sandbox configuration
local lang_data = mw.loadData ('Module:Lang/data' .. sandbox); -- language name override and transliteration tool-tip tables
local lang_name_table = lang_data.lang_name_table; -- language codes, names, regions, scripts, suppressed scripts
local lang_table = lang_data.lang_name_table.lang;
local lang_dep_table = lang_data.lang_name_table.lang_dep;
local script_table = lang_data.lang_name_table.script;
local region_table = lang_data.lang_name_table.region;
local variant_table = lang_data.lang_name_table.variant;
local suppressed_table = lang_data.lang_name_table.suppressed;
local override_table = lang_data.override;
local synonym_table = mw.loadData ('Module:Lang/ISO 639 synonyms'); -- ISO 639-2/639-2T code translation to 639-1 code
local cfg = mw.loadData ('Module:Lang/configuration' .. sandbox); -- for internationalization
local is_latn_data = mw.loadData ('Module:Lang/data/is latn data');
local sizeof_ranges_t = is_latn_data.sizeof_ranges_t;
local namespace = mw.title.getCurrentTitle().namespace; -- used for categorization
local content_lang = mw.language.getContentLanguage();
local this_wiki_lang_tag = content_lang.code; -- get this wiki's language tag
local this_wiki_lang_dir = content_lang:getDir(); -- get this wiki's language direction
local initial_style_state; -- set by lang_xx_normal() and lang_xx_italic()
local maint_cats = {}; -- maintenance categories go here
local maint_msgs = {}; -- and their messages go here
--[[--------------------------< M A K E _ E R R O R _ S P A N >--------------------------------------------------
]]
local function make_error_span (template, msg)
return table.concat ({'<span style="color:var(--color-error,#d33)">', cfg.misc_text_t.error, ': ', template, msg, '</span>'})
end
--[[--------------------------< S U B S T I T U T E >----------------------------------------------------------
Substitutes $1, $2, etc in <message> with data from <data_t>. Returns plain-text substituted string when
<data_t> not nil; returns <message> else.
]]
local function substitute (message, data_t)
return data_t and mw.message.newRawMessage (message, data_t):plain() or message;
end
--[[--------------------------< M A K E _ E R R O R _ M S G >--------------------------------------------------
Assembles an error message from template name, message text, help link, and error category.
]]
local function make_error_msg (msg, args_t, template)
local category;
local text; -- handle the oddity that is {{langx}}
if cfg.templates_t.langxx == template then
text = args_t.text or args_t[1]; -- for {{lang-xx}}
else
text = args_t.text or args_t[2]; -- for {{lang}}, {{langx}}, and {{transliteration}}
end
if cfg.templates_t.transliteration == template then
category = cfg.make_error_msg_t.xlit_err_cat;
else
category = cfg.make_error_msg_t.lang_err_cat;
end
local category_link = ((0 == namespace or 10 == namespace) and not args_t.nocat) and substitute ('[[Category:$1]]', {category}) or '';
return substitute ('[$1] <span style="color:var(--color-error,#d33)">$2: {{$3}}: $4 ([[:Category:$5|$6]])</span>$7', -- { prevents template name from being treated as a template call in certain situations
{
text or cfg.make_error_msg_t.undefined,
cfg.misc_text_t.error,
template,
msg,
category,
cfg.misc_text_t.help,
category_link
})
end
--[[--------------------------< P A R A M E T E R _ V A L I D A T E >------------------------------------------
]]
local function parameter_validate (args_t, template)
local err_msg = cfg.parameter_validate_t.invalid_param;
if cfg.templates_t.lang == template then -- for {{lang}}
for param, _ in pairs (args_t) do
if not cfg.known_params_t.params_lang_t[param] and -- unique {{lang}} parameters
not cfg.known_params_t.common_params_all_t[param] then -- common to all
return substitute (err_msg, {param}); -- <param> not found so abandon
end
end
elseif cfg.templates_t.langx == template then -- for {{langx}}
for param, _ in pairs (args_t) do
if not cfg.known_params_t.params_langx_t[param] and -- unique {{langx}} parameters
not cfg.known_params_t.params_x_t[param] and -- common to {{langx}} and {{lang-xx}}
not cfg.known_params_t.common_params_all_t[param] then -- common to all
return substitute (err_msg, {param}); -- <param> not found so abandon
end
end
elseif cfg.templates_t.langxx == template then -- for {{lang-xx}}
for param, _ in pairs (args_t) do
if not cfg.known_params_t.params_lang_xx_t[param] and -- unique {{lang-xx}} parameters
not cfg.known_params_t.params_x_t[param] and -- common to {{langx}} and {{lang-xx}}
not cfg.known_params_t.common_params_all_t[param] then -- common to all
return substitute (err_msg, {param}); -- <param> not found so abandon
end
end
end
end
--[[--------------------------< I S _ S E T >------------------------------------------------------------------
Returns true if argument is set; false otherwise. Argument is 'set' when it exists (not nil) or when it is not
an empty string.
]]
local function is_set (var)
return not (var == nil or var == '');
end
--[[--------------------------< I N V E R T _ I T A L I C S >-------------------------------------------------
This function attempts to invert the italic markup a args.text by adding/removing leading/trailing italic markup
in args.text. Like |italic=unset, |italic=invert disables automatic italic markup. Individual leading/trailing
apostrophes are converted to their HTML numeric entity equivalent so that the new italic markup doesn't become
bold markup inadvertently.
Leading and trailing wiki markup is extracted from args.text into separate table elements. Addition, removal,
replacement of wiki markup is handled by a string.gsub() replacement table operating only on these separate elements.
In the string.gsub() matching pattern, '.*' matches empty string as well as the three expected wiki markup patterns.
This function expects that markup in args.text is complete and correct; if it is not, oddness may result.
]]
local function invert_italics (source)
local invert_pattern_table = { -- leading/trailing markup add/remove/replace patterns
[""]="\'\'", -- empty string becomes italic markup
["\'\'"]="", -- italic markup becomes empty string
["\'\'\'"]="\'\'\'\'\'", -- bold becomes bold italic
["\'\'\'\'\'"]="\'\'\'", -- bold italic become bold
};
local seg = {};
source = source:gsub ("%f[\']\'%f[^\']", '''); -- protect single quote marks from being interpreted as bold markup
seg[1] = source:match ('^(\'\'+%f[^\']).+') or ''; -- get leading markup, if any; ignore single quote
seg[3] = source:match ('.+(%f[\']\'\'+)$') or ''; -- get trailing markup, if any; ignore single quote
if '' ~= seg[1] and '' ~= seg[3] then -- extract the 'text'
seg[2] = source:match ('^\'\'+%f[^\'](.+)%f[\']\'\'+$') -- from between leading and trailing markup
elseif '' ~= seg[1] then
seg[2] = source:match ('^\'\'+%f[^\'](.+)') -- following leading markup
elseif '' ~= seg[3] then
seg[2] = source:match ('(.+)%f[\']\'\'+$') -- preceding trailing markup
else
seg[2] = source -- when there is no markup
end
seg[1] = invert_pattern_table[seg[1]] or seg[1]; -- replace leading markup according to pattern table
seg[3] = invert_pattern_table[seg[3]] or seg[3]; -- replace leading markup according to pattern table
return table.concat (seg); -- put it all back together and done
end
--[[--------------------------< V A L I D A T E _ I T A L I C >------------------------------------------------
Validates |italic= or |italics= assigned values.
When |italic= is set and has an acceptable assigned value, return the matching CSS font-style property value or,
for the special case 'default', return nil.
When |italic= is not set, or has an unacceptable assigned value, return nil and a nil error message.
When both |italic= and |italics= are set, returns nil and a 'conflicting' error message.
The return value nil causes the calling lang, lang_xx, or xlit function to set args.italic according to the template's
defined default ('inherit' for {{lang}}, 'inherit' or 'italic' for {{lang-??}} depending on
the individual template's requirements, 'italic' for {{transliteration}}) or to the value appropriate to |script=, if set ({{lang}}
and {{lang-??}} only).
Accepted values and the values that this function returns are are:
nil - when |italic= absent or not set; returns nil
default - for completeness, should rarely if ever be used; returns nil
yes - force args.text to be rendered in italic font; returns 'italic'
no - force args.text to be rendered in normal font; returns 'normal'
unset - disables font control so that font-style applied to text is dictated by markup inside or outside the template; returns 'inherit'
invert - disables font control so that font-style applied to text is dictated by markup outside or inverted inside the template; returns 'invert'
]]
local function validate_italic (args)
local properties = {[cfg.keywords_t.affirmative] = 'italic', [cfg.keywords_t.negative] = 'normal', [cfg.keywords_t.unset] = 'inherit', [cfg.keywords_t.invert] = 'invert', [cfg.keywords_t.default] = nil};
local count = 0
for _, arg in pairs {'italic', 'italics', 'i'} do
if args[arg] then
count = count + 1
end
end
if count > 1 then -- return nil and an error message if more than one is set
return nil, cfg.validate_italic_t.multi_italic;
end
return properties[args.italic or args.italics or args.i], nil; -- return an appropriate value and a nil error message
end
--[=[--------------------------< V A L I D A T E _ C A T _ A R G S >----------------------------------------------------------
Default behavior of the {{lang}} and {{lang-??}} templates is to add categorization when the templates are used in main space.
This default functionality may be suppressed by setting |nocat=yes or |cat=no. This function selects one of these two parameters
to control categorization.
Because having two parameters with 'opposite' names and 'opposite' values is confusing, this function accepts only affirmative
values for |nocat= and only negative values for |cat=; in both cases the 'other' sense (and non-sense) is not accepted and the
parameter is treated as if it were not set in the template.
Sets args.nocat to true if categorization is to be turned off; to nil if the default behavior should apply.
Accepted values for |nocat= are the text strings:
'yes', 'y', 'true', 't', on, '1' -- [[Module:Yesno]] returns logical true for all of these; false or nil else
for |cat=
'no', 'n', 'false', 'f', 'off', '0' -- [[Module:Yesno]] returns logical false for all of these; true or nil else
]=]
local function validate_cat_args (args)
if not (args.nocat or args.cat) then -- both are nil, so categorize
return;
end
if false == yesno (args.cat) or true == yesno (args.nocat) then
args.nocat = true; -- set to true when args.nocat is affirmative; nil else (as if the parameter were not set in the template)
else -- args.nocat is the parameter actually used.
args.nocat = nil;
end
end
--[[--------------------------< I N _ A R R A Y >--------------------------------------------------------------
Whether needle is in haystack.
]]
local function in_array (needle, haystack)
if needle == nil then
return false;
end
for n,v in ipairs (haystack) do
if v == needle then
return n;
end
end
return false;
end
--[[--------------------------< F O R M A T _ I E T F _ T A G >------------------------------------------------
Prettify IETF tags to use recommended subtag formats:
code: lower case
script: sentence case
region: upper case
variant: lower case
private: lower case prefixed with -x-
]]
local function format_ietf_tag (code, script, region, variant, private)
local out = {};
if is_set (private) then
return table.concat ({code:lower(), 'x', private:lower()}, '-'); -- if private, all other tags ignored
end
table.insert (out, code:lower());
if is_set (script) then
script = script:lower():gsub ('^%a', string.upper);
table.insert (out, script);
end
if is_set (region) then
table.insert (out, region:upper());
end
if is_set (variant) then
table.insert (out, variant:lower());
end
return table.concat (out, '-');
end
--[[--------------------------< G E T _ I E T F _ P A R T S >--------------------------------------------------
Extracts and returns IETF language tag parts:
primary language subtag (required) - 2 or 3 character IANA language code
script subtag - four character IANA script code
region subtag - two-letter or three digit IANA region code
variant subtag - four digit or 5-8 alnum variant code; only one variant subtag supported
private subtag - x- followed by 1-8 alnum private code; only supported with the primary language tag
in any one of these forms
lang lang-variant
lang-script lang-script-variant
lang-region lang-region-variant
lang-script-region lang-script-region-variant
lang-x-private
each of lang, script, region, variant, and private, when used, must be valid.
Languages with both two- and three-character code synonyms are promoted to the two-character synonym because
the IANA registry file omits the synonymous three-character code; we cannot depend on browsers understanding
the synonymous three-character codes in the lang= attribute.
For {{lang-??}} templates, the parameters |script=, |region=, and |variant= are supported (not supported in {{lang}}
because those parameters are superfluous to the IETF subtags in |code=).
Returns six values; all lower case. Valid parts are returned as themselves; omitted parts are returned as empty strings, invalid
parts are returned as nil; the sixth returned item is an error message (if an error detected) or nil.
See http://www.rfc-editor.org/rfc/bcp/bcp47.txt section 2.1.
]]
local function get_ietf_parts (source, args_script, args_region, args_variant)
local code, script, region, variant, private; -- IETF tag parts
if not is_set (source) then
return nil, nil, nil, nil, nil, cfg.get_ietf_parts_t.missing_lang_tag;
end
local pattern = { -- table of tables holding acceptable IETF tag patterns and short names of the IETF part captured by the pattern
{'^(%a%a%a?)%-(%a%a%a%a)%-(%a%a)%-(%d%d%d%d)$', 's', 'r', 'v'}, -- 1 - ll-Ssss-RR-variant (where variant is 4 digits)
{'^(%a%a%a?)%-(%a%a%a%a)%-(%d%d%d)%-(%d%d%d%d)$', 's', 'r', 'v'}, -- 2 - ll-Ssss-DDD-variant (where region is 3 digits; variant is 4 digits)
{'^(%a%a%a?)%-(%a%a%a%a)%-(%a%a)%-(%w%w%w%w%w%w?%w?%w?)$', 's', 'r', 'v'}, -- 3 - ll-Ssss-RR-variant (where variant is 5-8 alnum characters)
{'^(%a%a%a?)%-(%a%a%a%a)%-(%d%d%d)%-(%w%w%w%w%w%w?%w?%w?)$', 's', 'r', 'v'}, -- 4 - ll-Ssss-DDD-variant (where region is 3 digits; variant is 5-8 alnum characters)
{'^(%a%a%a?)%-(%a%a%a%a)%-(%d%d%d%d)$', 's', 'v'}, -- 5 - ll-Ssss-variant (where variant is 4 digits)
{'^(%a%a%a?)%-(%a%a%a%a)%-(%w%w%w%w%w%w?%w?%w?)$', 's', 'v'}, -- 6 - ll-Ssss-variant (where variant is 5-8 alnum characters)
{'^(%a%a%a?)%-(%a%a)%-(%d%d%d%d)$', 'r', 'v'}, -- 7 - ll-RR-variant (where variant is 4 digits)
{'^(%a%a%a?)%-(%d%d%d)%-(%d%d%d%d)$', 'r', 'v'}, -- 8 - ll-DDD-variant (where region is 3 digits; variant is 4 digits)
{'^(%a%a%a?)%-(%a%a)%-(%w%w%w%w%w%w?%w?%w?)$', 'r', 'v'}, -- 9 - ll-RR-variant (where variant is 5-8 alnum characters)
{'^(%a%a%a?)%-(%d%d%d)%-(%w%w%w%w%w%w?%w?%w?)$', 'r', 'v'}, -- 10 - ll-DDD-variant (where region is 3 digits; variant is 5-8 alnum characters)
{'^(%a%a%a?)%-(%d%d%d%d)$', 'v'}, -- 11 - ll-variant (where variant is 4 digits)
{'^(%a%a%a?)%-(%w%w%w%w%w%w?%w?%w?)$', 'v'}, -- 12 - ll-variant (where variant is 5-8 alnum characters)
{'^(%a%a%a?)%-(%a%a%a%a)%-(%a%a)$', 's', 'r'}, -- 13 - ll-Ssss-RR
{'^(%a%a%a?)%-(%a%a%a%a)%-(%d%d%d)$', 's', 'r'}, -- 14 - ll-Ssss-DDD (region is 3 digits)
{'^(%a%a%a?)%-(%a%a%a%a)$', 's'}, -- 15 - ll-Ssss
{'^(%a%a%a?)%-(%a%a)$', 'r'}, -- 16 - ll-RR
{'^(%a%a%a?)%-(%d%d%d)$', 'r'}, -- 17 - ll-DDD (region is 3 digits)
{'^(%a%a%a?)$'}, -- 18 - ll
{'^(%a%a%a?)%-x%-(%w%w?%w?%w?%w?%w?%w?%w?)$', 'p'}, -- 19 - ll-x-pppppppp (private is 1-8 alnum characters)
}
local t = {}; -- table of captures; serves as a translator between captured IETF tag parts and named variables
for i, v in ipairs (pattern) do -- spin through the pattern table looking for a match
local c1, c2, c3, c4; -- captures in the 'pattern' from the pattern table go here
c1, c2, c3, c4 = source:match (pattern[i][1]); -- one or more captures set if source matches pattern[i])
if c1 then -- c1 always set on match
code = c1; -- first capture is always code
t = {
[pattern[i][2] or 'x'] = c2, -- fill the table of captures with the rest of the captures
[pattern[i][3] or 'x'] = c3, -- take index names from pattern table and assign sequential captures
[pattern[i][4] or 'x'] = c4, -- index name may be nil in pattern[i] table so "or 'x'" spoofs a name for this index in this table
};
script = t.s or ''; -- translate table contents to named variables;
region = t.r or ''; -- absent table entries are nil so set named IETF parts to empty string for concatenation
variant= t.v or '';
private = t.p or '';
break; -- and done
end
end
if not code then
return nil, nil, nil, nil, nil, substitute (cfg.get_ietf_parts_t.unrecog_tag, {source}); -- don't know what we got but it is malformed
end
code = code:lower(); -- ensure that we use and return lower case version of this
if not (override_table[code] or lang_table[code] or synonym_table[code] or lang_dep_table[code]) then
return nil, nil, nil, nil, nil, substitute (cfg.get_ietf_parts_t.unrecog_code, {code}); -- invalid language code, don't know about the others (don't care?)
end
if synonym_table[code] then -- if 639-2/639-2T code has a 639-1 synonym
table.insert (maint_cats, substitute (cfg.get_ietf_parts_t.maint_promo_cat, {code}));
table.insert (maint_msgs, substitute (cfg.get_ietf_parts_t.maint_promo_msg, {code, synonym_table[code]}));
code = synonym_table[code]; -- use the synonym
end
if is_set (script) then
if is_set (args_script) then
return code, nil, nil, nil, nil, cfg.get_ietf_parts_t.redundant_scr; -- both code with script and |script= not allowed
end
else
script = args_script or ''; -- use args.script if provided
end
if is_set (script) then
script = script:lower(); -- ensure that we use and return lower case version of this
if not script_table[script] then
return code, nil, nil, nil, nil, substitute (cfg.get_ietf_parts_t.unrecog_scr_code, {script, code}); -- language code OK, invalid script, don't know about the others (don't care?)
end
end
if suppressed_table[script] then -- ensure that code-script does not use a suppressed script
if in_array (code, suppressed_table[script]) then
return code, nil, nil, nil, nil, substitute (cfg.get_ietf_parts_t.script_code, {script, code}); -- language code OK, script is suppressed for this code
end
end
if is_set (region) then
if is_set (args_region) then
return code, nil, nil, nil, nil, cfg.get_ietf_parts_t.redundant_reg; -- both code with region and |region= not allowed
end
else
region = args_region or ''; -- use args.region if provided
end
if is_set (region) then
region = region:lower(); -- ensure that we use and return lower case version of this
if not region_table[region] then
return code, script, nil, nil, nil, substitute (cfg.get_ietf_parts_t.unrecog_reg_code, {region, code});
end
end
if is_set (variant) then
if is_set (args_variant) then
return code, nil, nil, nil, nil, cfg.get_ietf_parts_t.redundant_var; -- both code with variant and |variant= not allowed
end
else
variant = args_variant or ''; -- use args.variant if provided
end
if is_set (variant) then
variant = variant:lower(); -- ensure that we use and return lower case version of this
if not variant_table[variant] then -- make sure variant is valid
return code, script, region, nil, nil, substitute (cfg.get_ietf_parts_t.unrecog_var, {variant});
end -- does this duplicate/replace tests in lang() and lang_xx()?
if is_set (script) then -- if script set it must be part of the 'prefix'
if not in_array (table.concat ({code, '-', script}), variant_table[variant]['prefixes']) then
return code, script, region, nil, nil, substitute (cfg.get_ietf_parts_t.unrecog_var_code_scr, {variant, code, script});
end
elseif is_set (region) then -- if region set, there are some prefixes that require lang code and region (en-CA-newfound)
if not in_array (code, variant_table[variant]['prefixes']) then -- first see if lang code is all that's required (en-oxendict though en-GB-oxendict is preferred)
if not in_array (table.concat ({code, '-', region}), variant_table[variant]['prefixes']) then -- now try for lang code and region (en-CA-newfound)
return code, script, region, nil, nil, substitute (cfg.get_ietf_parts_t.unrecog_var_code_reg, {variant, code, region});
end
end
else -- cheap way to determine if there are prefixes; fonipa and others don't have prefixes; # operator always returns 0
if variant_table[variant]['prefixes'][1] and not in_array (code, variant_table[variant]['prefixes']) then
return code, script, region, nil, nil, substitute (cfg.get_ietf_parts_t.unrecog_var_code, {variant, code});
end
end
end
if is_set (private) then
private = private:lower(); -- ensure that we use and return lower case version of this
if not override_table[table.concat ({code, '-x-', private})] then -- make sure private tag is valid; note that index
return code, script, region, nil, nil, substitute (cfg.get_ietf_parts_t.unrecog_pri, {private});
end
end
return code, script, region, variant, private, nil; -- return the good bits; make sure that msg is nil
end
--[=[-------------------------< M A K E _ W I K I L I N K >----------------------------------------------------
Makes a wikilink; when both link and display text is provided, returns a wikilink in the form [[L|D]]; if only
link is provided, returns a wikilink in the form [[L]]; if neither are provided or link is omitted, returns an
empty string.
]=]
local function make_wikilink (link, display)
if is_set (link) then
if is_set (display) then
return table.concat ({'[[', link, '|', display, ']]'});
else
return table.concat ({'[[', link, ']]'});
end
else
return '';
end
end
--[[--------------------------< D I V _ M A R K U P _ A D D >--------------------------------------------------
Adds <i> and </i> tags to list-item text or to implied <p>..</p> text. Mixed not supported.
]]
local function div_markup_add (text, style)
if text:find ('^\n[%*:;#]') then -- look for list markup; list markup must begin at start of text
if 'italic' == style then
return text:gsub ('(\n[%*:;#]+)([^\n]+)', '%1<i>%2</i>'); -- insert italic markup at each list item
else
return text;
end
end
if text:find ('\n+') then -- look for any number of \n characters in text
text = text:gsub ('([^\n])\n([^\n])', '%1 %2'); -- replace single newline characters with a space character which mimics MediaWiki
if 'italic' == style then
text = text:gsub('[^\n]+', '<p><i>%1</i></p>'); -- insert p and italic markup tags at each implied p (two or more consecutive '\n\n' sequences)
else
text = text:gsub ('[^\n]+', '<p>%1</p>'); -- insert p markup at each implied p
text = text:gsub ('\n', ''); -- strip newline characters
end
end
return text;
end
--[[--------------------------< T I T L E _ W R A P P E R _ M A K E >------------------------------------------
Makes a <span title="<title text>"><content_text></span> or <div title="<title text>"><content_text></div> where
<title text> is in the tool-tip in the wiki's local language and <content_text> is non-local-language text in
HTML markup. This because the lang= attribute applies to the content of its enclosing tag.
<tag> holds a string 'div' or 'span' used to choose the correct wrapping tag.
]]
local function title_wrapper_make (title_text, content_text, tag)
local wrapper_t = {};
table.insert (wrapper_t, table.concat ({'<', tag})); -- open opening wrapper tag
table.insert (wrapper_t, ' title=\"'); -- begin title attribute
table.insert (wrapper_t, title_text); -- add <title_text>
table.insert (wrapper_t, '\">'); -- end title attribute and close opening wrapper tag
table.insert (wrapper_t, content_text); -- add <content_text>
table.insert (wrapper_t, table.concat ({'</', tag, '>'})); -- add closing wrapper tag
return table.concat (wrapper_t); -- make a big string and done
end
--[[--------------------------< M A K E _ T E X T _ H T M L >--------------------------------------------------
Add the HTML markup to text according to the type of content that it is: <span> or <i> tags for inline content or
<div> tags for block content
The lang= attribute also applies to the content of the tag where it is placed so this is wrong because 'Spanish
language text' is English:
<i lang="es" title="Spanish language text">casa</i>
should be:
<span title="Spanish language text"><i lang="es">casa</i></span>
or for <div>...</div>:
<div title="Spanish language text"><div lang="es"><spanish-language-text></div></div>
]]
local function make_text_html (code, text, tag, rtl, style, size, language)
local html_t = {};
local style_added = '';
local wrapper_tag = tag; -- <tag> gets modified so save a copy for use when/if we create a wrapper span or div
if text:match ('^%*') then
table.insert (html_t, '*'); -- move proto language text prefix outside of italic markup if any; use numeric entity because plain splat confuses MediaWiki
text = text:gsub ('^%*', ''); -- remove the splat from the text
end
if 'span' == tag then -- default HTML tag for inline content
if 'italic' == style then -- but if italic
tag = 'i'; -- change to <i> tags
end
else -- must be div so go
text = div_markup_add (text, style); -- handle implied <p>, implied <p> with <i>, and list markup (*;:#) with <i>
end
table.insert (html_t, table.concat ({'<', tag})); -- open the <i>, <span>, or <div> HTML tag
code = code:gsub ('%-x%-.*', ''); -- strip private use subtag from code tag because meaningless outside of Wikipedia
table.insert (html_t, table.concat ({' lang="', code, '\"'})); -- add language attribute
if (rtl or unicode.is_rtl(text)) and ('ltr' == this_wiki_lang_dir) then -- text is right-to-left on a left-to-right wiki
table.insert (html_t, ' dir="rtl"'); -- add direction attribute for right-to-left languages
elseif not (rtl or unicode.is_rtl(text)) and ('rtl' == this_wiki_lang_dir) then -- text is left-to-right on a right-to-left wiki
table.insert (html_t, ' dir="ltr"'); -- add direction attribute for left-to-right languages
end
if 'normal' == style then -- when |italic=no
table.insert (html_t, ' style=\"font-style: normal;'); -- override external markup, if any
style_added = '\"'; -- remember that style attribute added and is not yet closed
end
if is_set (size) then -- when |size=<something>
if is_set (style_added) then
table.insert (html_t, table.concat ({' font-size: ', size, ';'})); -- add when style attribute already inserted
else
table.insert (html_t, table.concat ({' style=\"font-size: ', size, ';'})); -- create style attribute
style_added = '\"'; -- remember that style attribute added and is not yet closed
end
end
table.insert (html_t, table.concat ({style_added, '>'})); -- close the opening HTML tag
table.insert (html_t, text); -- insert the text
table.insert (html_t, table.concat ({'</', tag, '>'})); -- close the 'text' <i>, <span>, or <div> HTML tag
if is_set (language) then -- create a <title_text> string for the title= attribute in a wrapper span or div
local title_text;
if 'zxx' == code then -- special case for this tag 'no linguistic content'
title_text = substitute ('$1 $2', {language, cfg.make_text_html_t.zxx}); -- not a language so don't use 'language' in title text
elseif mw.ustring.find (language, 'languages', 1, true) then
title_text = substitute ('$1 $2', {language, cfg.make_text_html_t.collective}); -- for collective languages
else
title_text = substitute ('$1-$2', {language, cfg.make_text_html_t.individual}); -- for individual languages
end
return title_wrapper_make (title_text, table.concat (html_t), wrapper_tag);
else
return table.concat (html_t);
end
end
--[=[-------------------------< M A K E _ C A T E G O R Y >----------------------------------------------------
For individual language, <language>, returns:
[[Category:Articles containing <language>-language text]]
For English:
[[Category:Articles containing explicitly cited English-language text]]
For ISO 639-2 collective languages (and for 639-1 bh):
[[Category:Articles with text in <language> languages]]
]=]
local function make_category (code, language_name, nocat, name_get)
if ((0 ~= namespace) or nocat) and not name_get then -- only categorize in article space
return ''; -- return empty string for concatenation
end
if mw.ustring.find (language_name, 'languages', 1, true) then
return substitute ('[[$1 $2]]', {cfg.make_category_t.collective_cat, language_name});
end
if this_wiki_lang_tag == code then
return substitute ('[[$1 $2 $3-$4]]', { -- unique category name for the local language
cfg.make_category_t.cat_prefix,
cfg.make_category_t.explicit_cat,
language_name,
cfg.make_category_t.cat_postfix,
});
else
return substitute ('[[$1 $2-$3]]', { -- category for individual languages
cfg.make_category_t.cat_prefix,
language_name,
cfg.make_category_t.cat_postfix,
});
end
end
--[[--------------------------< M A K E _ T R A N S L I T >----------------------------------------------------
Return translit <i lang=xx-Latn>...</i> where xx is the language code; else return empty string.
The value |script= is not used in {{transliteration}} for this purpose; instead it uses |code. Because language scripts
are listed in the {{transliteration}} switches they are included in the data tables. The script parameter is introduced
at {{Language with name and transliteration}}. If |script= is set, this function uses it in preference to code.
To avoid confusion, in this module and the templates that use it, the transliteration script parameter is renamed
to be |translit-script= (in this function, tscript).
This function is used by both lang_xx() and xlit()
lang_xx() always provides code, language_name, and translit; may provide tscript; never provides style
xlit() always provides language_name, translit, and one of code or tscript, never both; always provides style
For {{transliteration}}, style only applies when a language code is provided.
]]
local function make_translit (code, language_name, translit, std, tscript, style, engvar)
local title_t = lang_data.translit_title_table; -- table of transliteration standards and the language codes and scripts that apply to those standards
local title_text = ''; -- tool tip text for title= attribute
std = std and std:lower(); -- lower case for table indexing
if not is_set (std) and not is_set (tscript) then -- when neither standard nor script specified
title_text = language_name; -- write a generic tool tip
if not mw.ustring.find (language_name, 'languages', 1, true) then -- collective language names (plural 'languages' is part of the name)
title_text = substitute ('$1-$2', {title_text, cfg.misc_text_t.language}); -- skip this text (individual and macro languages only)
end
title_text = substitute ('$1 $2', {title_text, mw.ustring.lower (cfg.engvar_t[engvar]['romanisz_lc'])}); -- finish the tool tip; use romanization when neither script nor standard supplied
elseif is_set (std) and is_set (tscript) then -- when both are specified
if title_t[std] then -- and if standard is legitimate
if title_t[std][tscript] then -- and if script for that standard is legitimate
if script_table[tscript] then
title_text = substitute ('$1$2 ($3 $4) $5', { -- add the appropriate text to the tool tip
title_text,
title_t[std][tscript:lower()],
script_table[tscript],
cfg.make_translit_t.script,
cfg.make_translit_t.transliteration,
});
else
title_text = title_text .. title_t[std]['default']; -- use the default if script not in std table; TODO: maint cat? error message because script not found for this standard?
end
else
title_text = title_text .. title_t[std]['default']; -- use the default if script not in std table; TODO: maint cat? error message because script not found for this standard?
end
else
return ''; -- invalid standard, setup for error message
end
elseif is_set (std) then -- translit-script not set, use language code
if not title_t[std] then return ''; end -- invalid standard, setup for error message
if title_t[std][code] then -- if language code is in the table (xlit may not provide a language code)
local fmt_str = '$1$2 ($3 $4) $5'; -- generic format string for tool tip
if language_name:match ('languages') then
fmt_str = '$1$2 ($3) $5'; -- format string for collective languages tool tip
end
title_text = substitute (fmt_str, { -- add the appropriate text to the tool tip
title_text,
title_t[std][code:lower()],
language_name,
cfg.misc_text_t.language,
cfg.make_translit_t.transliteration,
});
else -- code doesn't match
title_text = title_text .. title_t[std]['default']; -- so use the standard's default
end
else -- here if translit-script set but translit-std not set
if title_t['no_std'][tscript] then
title_text = title_text .. title_t['no_std'][tscript]; -- use translit-script if set
elseif title_t['no_std'][code] then
title_text = title_text .. title_t['no_std'][code]; -- use language code
else
if is_set (tscript) then
title_text = substitute ('$1$2-$3 $4', { -- write a script tool tip
title_text,
language_name,
cfg.make_translit_t.script,
cfg.make_translit_t.transliteration,
});
elseif is_set (code) then
if not mw.ustring.find (language_name, 'languages', 1, true) then -- collective language names (plural 'languages' is part of the name)
title_text = substitute ('$1-$2', { -- skip this text (individual and macro languages only)
title_text,
cfg.misc_text_t.language,
});
end
title_text = substitute ('$1 $2', { -- finish the tool tip
title_text,
cfg.make_translit_t.transliteration,
});
else
title_text = substitute ('$1 $2', { -- generic tool tip (can we ever get here?)
title_text,
cfg.make_translit_t.transliteration,
});
end
end
end
local tag
if is_set (code) then -- when a language code is provided (always with {{lang-??}} templates, not always with {{transliteration}})
code = code:match ('^(%a%a%a?)'); -- strip all subtags leaving only the language subtag
if not style then -- nil for the default italic style
tag = '<i lang="%s-Latn">%s</i>'
else
tag = '<span style="font-style: %s" lang="%s-Latn">%s</span>' -- non-standard style, construct a span tag for it
tag = string.format(tag, style, "%s", "%s")
end
tag = string.format(tag, code, "%s")
else
tag = '<span>%s</span>' -- when no language code: no lang= attribute, not italic ({{transliteration}} only)
end
tag = string.format(tag, translit) -- add the translit text
if '' == title_text then -- when there is no need for a tool-tip
return tag; -- done
else
title_text = cfg.engvar_sel_t.gb == engvar and title_text:gsub ('([Rr]omani)z', '%1s') or title_text; -- gb eng when engvar specifies gb eng; us eng else
return title_wrapper_make (title_text, tag, 'span'); -- wrap with a tool-tip span and done
end
end
--[[--------------------------< V A L I D A T E _ T E X T >----------------------------------------------------
This function checks the content of args.text and returns empty string if nothing is amiss else it returns an
error message. The tests are for empty or missing text and for improper or disallowed use of apostrophe markup.
Italic rendering is controlled by the |italic= template parameter so italic markup should never appear in args.text
either as ''itself'' or as '''''bold italic''''' unless |italic=unset or |italic=invert.
]]
local function validate_text (template, args)
if not is_set (args.text) then
return make_error_msg (cfg.validate_text_t.no_text, args, template);
end
if args.text:find ("%f[\']\'\'\'\'%f[^\']") or args.text:find ("\'\'\'\'\'[\']+") then -- because we're looking, look for 4 appostrophes or 6+ appostrophes
return make_error_msg (cfg.validate_text_t.malformed_markup, args, template);
end
local style = args.italic;
if (cfg.keywords_t.unset ~= style) and (cfg.keywords_t.invert ~=style) then
if args.text:find ("%f[\']\'\'%f[^\']") or args.text:find ("%f[\']\'\'\'\'\'%f[^\']") then -- italic but not bold, or bold italic
return make_error_msg (cfg.validate_text_t.italic_markup, args, template);
end
end
end
--[[--------------------------< R E N D E R _ M A I N T >------------------------------------------------------
Render mainenance messages and categories.
]]
local function render_maint (nocat)
local maint = {};
if 0 < #maint_msgs then -- when there are maintenance messages
table.insert (maint, table.concat ({'<span class="lang-comment" style="font-style: normal; display: none; color: #33aa33; margin-left: 0.3em;">'})); -- opening <span> tag
for _, msg in ipairs (maint_msgs) do
table.insert (maint, table.concat ({msg, ' '})); -- add message strings
end
table.insert (maint, '</span>'); -- close the span
end
if (0 < #maint_cats) and (0 == namespace) and not nocat then -- when there are maintenance categories; article namespace only
for _, cat in ipairs (maint_cats) do
table.insert (maint, table.concat ({'[[Category:', cat, ']]'})); -- format and add the categories
end
end
return table.concat (maint);
end
--[[--------------------------< P R O T O _ P R E F I X >------------------------------------------------------
For proto languages, text is prefixed with a splat. We do that here as a flag for make_text_html() so that a splat
will be rendered outside of italic markup (if used). If the first character in text here is already a splat, we
do nothing.
proto_param is boolean or nil; true adds splat prefix regardless of language name; false removes and inhibits
regardless of language name; nil does nothing; presumes that the value in text is correct but removes extra splac.
]]
local function proto_prefix (text, language_name, proto_param)
if false == proto_param then -- when forced by |proto=no
return text:gsub ('^%**', ''); -- return text without splat prefix regardless of language name or existing splat prefix in text
elseif (language_name:find ('^Proto%-') or (true == proto_param)) then -- language is a proto or forced by |proto=yes
return text:gsub ('^%**', '*'); -- prefix proto-language text with a splat; also removes duplicate prefixing splats
end
return text:gsub ('^%*+', '*'); -- return text unmolested except multiple splats reduced to one splat
end
--[[--------------------------< H A S _ P O E M _ T A G >------------------------------------------------------
Looks for a poem strip marker in text; returns true when found; false else.
Auto-italic detection disabled when text has poem stripmarker because it is not possible for this code to know
the content that will replace the stripmarker.
]]
local function has_poem_tag (text)
return text:find ('\127[^\127]*UNIQ%-%-poem%-[%a%d]+%-QINU[^\127]*\127') and true or false;
end
--[[--------------------------< H T M L _ T A G _ S E L E C T >------------------------------------------------
Inspects content of and selectively trims text. Returns text and the name of an appropriate HTML tag for text.
If text contains:
\n\n text has implied <p>..</p> tags - trim leading and trailing whitespace and return
If text begins with list markup:
\n* unordered
\n; definition
\n: definition
\n# ordered
trim all leading whitespace except \n and trim all trailing whitespace
If text contains <poem>...</poem> stripmarker, return text unmodified and choose <div>..</div> tags because
the stripmarker is replaced with text wrapped in <div>..</div> tags.
If the text contains any actual <div>...</div> tags, then it's again returned unmodified and <div>...</div>
tags are used to wrap it, to prevent div/span inversion.
]]
local function html_tag_select (text)
local tag;
if has_poem_tag (text) then -- contains poem stripmarker (we can't know the content of that)
tag = 'div'; -- poem replacement is in div tags so lang must use div tags
elseif text:find ('<div') then -- reductive; if the text contains a div tag, we must use div tags
tag = 'div';
elseif mw.text.trim (text):find ('\n\n+') then -- contains implied p tags
text = mw.text.trim (text); -- trim leading and trailing whitespace characters
tag = 'div'; -- must be div because span may not contain p tags (added later by MediaWiki); poem replacement is in div tags
elseif text:find ('\n[%*:;%#]') then -- if text has list markup
text = text:gsub ('^[\t\r\f ]*', ''):gsub ('%s*$', ''); -- trim all whitespace except leading newline character '\n'
tag = 'div'; -- must be div because span may not contain ul, dd, dl, ol tags (added later by MediaWiki)
else
text = mw.text.trim (text); -- plain text
tag = 'span'; -- so span is fine
end
return text, tag;
end
--[[--------------------------< V A L I D A T E _ P R O T O >--------------------------------------------------
Validates value assigned to |proto=; permitted values are yes and no; yes returns as true, no returns as false,
empty string (or parameter omitted) returns as nil; any other value returns nil with <proto_param> as second
return value for use in error message.
]]
local function validate_proto (proto_param)
if cfg.keywords_t.affirmative == proto_param then
return true;
elseif cfg.keywords_t.negative == proto_param then
return false;
elseif is_set (proto_param) then
return nil, proto_param; -- |proto= something other than 'yes' or 'no'
else
return nil; -- missing or empty
end
end
--[[--------------------------< L A N G U A G E _ N A M E _ G E T >--------------------------------------------
Common function to return language name from the data set according to IETF tag.
Returns language name if found in data tables; nil else.
]]
local function language_name_get (ietf, code, cat)
ietf = ietf:lower(); -- ietf:lower() because format_ietf_tag() returns mixed case
local name; -- remains nil if not found
if override_table[ietf] then -- look for whole IETF tag in override table
name = override_table[ietf];
elseif override_table[code] then -- not there so try basic language tag
name = override_table[code];
elseif lang_table[code] then -- shift to IANA active tag/name table
name = lang_table[code];
elseif lang_dep_table[code] then -- try the IANA deprecated tag/name table
name = lang_dep_table[code];
end
if lang_dep_table[code] and cat then -- because deprecated code may have been overridden to en.wiki preferred name
table.insert (maint_cats, substitute (cfg.language_name_get_t.deprecated_cat, {code}));
table.insert (maint_msgs, substitute (cfg.language_name_get_t.deprecated_msg, {code}));
end
return name; -- name from data tables or nil
end
--[[--------------------------< T E X T _ S C R I P T _ M A T C H _ T E S T >----------------------------------
IETF script subtag should match the script of the <text>. This module does not attempt to know all scripts and
what they look like. It does know what Latn script looks like so when <text> is written using other than the Latn
script, the IETF script subtag, if present, should not be Latn.
Conversely, when <text> is written using the Latn script, the IETF script subtag, if present, should be Latn.
For the purposes of this test, Latf (Fraktur) and Latg (Gaelic) are considered to be equivalent to Latn because
unicode treats these two scripts as font-specific variants of Latn.
Returns an error message when mismatch detected; nil else.
]]
local function text_script_match_test (script, is_latn_text, pos, char)
local scripts_t = {['latf'] = true, ['latg'] = true, ['latn'] = true}; -- unicode 'latn' scripts; 'latf' and 'latg' are font variants so there are no Fraktur or Gaelic codepoints
if is_set (script) then -- don't bother with the rest of this if <script> is nil or empty string
script = script:lower(); -- lower case to index into <scripts_t>
if is_latn_text then -- when text is wholly Latn script
if not scripts_t[script] then -- but a non-Latn script is specified
return cfg.text_script_match_test_t.latn_txt_mismatch; -- emit an error message
end
else -- when text is not wholly Latn script
if scripts_t[script] then -- but a Latn script is specified
return substitute (cfg.text_script_match_test_t.latn_scr_mismatch, {pos, char}); -- emit an error message with position of first offending character
end
end
end
end
--[[--------------------------< B I N A R Y _ S E A R C H >---------------------------------------------------
conducts a binary search of <ranges_t> for a sub-range that holds <target>.
returns boolean true if a sub-range holding <target> is found; boolean false else.
]]
local function binary_search (target, ranges_t)
local idx_bot = 1; -- initialize to index of first key
local idx_top = sizeof_ranges_t; -- initialize to index of last key (number of keys)
if (target < ranges_t[idx_bot][1]) or (target > ranges_t[idx_top][2]) then -- invalid; target out of range
return; -- abandon
end
local idx_mid; -- calculated index of range midway between top index and bottom index
local flag = false; -- flag to tell us when we've evaluated last (highest) range in <ranges_t>
while 1 do
idx_mid = math.ceil ((idx_bot + idx_top) / 2); -- get the mid-point in the <ranges_t> sequence
if (target >= ranges_t[idx_mid][1]) and (target <= ranges_t[idx_mid][2]) then -- indexed range low value <= target <= indexed range high value
return true; -- we found the range that holds the <target> character; return true
elseif (target > ranges_t[idx_mid][2]) then -- is <target> > indexed range high value?
idx_bot = idx_mid; -- adjust <idx_bot> up
else -- here when <target> less than indexed range low value
idx_top = idx_mid - 1; -- adjust <idx_top> down
end
if flag then
break; -- here when we just evaluated the last range and <target> not found
end
if not flag and (idx_bot == idx_top) then -- set true just before we evaluate the last (highest) range in <ranges_t>
flag = true;
end
end
end
--[[--------------------------< I S _ L A T I N >--------------------------------------------------------------
compare <text> as codepoints to lists of known codepoints accepted as Latn script
returns boolean true and modified <text> when <text> is wrapped in accept-as-written markup
returns boolean true and <text> when codepoint is known
returns boolean false, <text>, non-Latn codepoint position in <text> (left to right), and the codepoint character
when codepoint is not known
TODO: when text has accept-as-written markup, return a non-boolean value to indicate that <text> is not wholly
latn script? Use that return value to create non-Latn HTML lang= attribute because <text> isn't really
latn so lang=und (undetermined)? or instead, omit the -Latn subtag? (without -Latn need to force |italic=yes)
]]
local function is_latin (text, tag)
local count;
text, count = text:gsub ('^%(%((.+)%)%)$', '%1'); -- remove accept-as-written markup if present
if 0 ~= count then
return true, text; -- markup present so assume that <text> is Latn-script
end
local pos = 0; -- position counter for error messaging
for codepoint in mw.ustring.gcodepoint (text) do -- fetch each code point
pos = pos + 1; -- bump the position counter
if not is_latn_data.singles_t[codepoint] and -- codepoint not found in the singles list?
not binary_search (codepoint, is_latn_data.ranges_t) and -- codepoint not a member of a listed range?
not (tag and is_latn_data.specials_t[codepoint] and is_latn_data.specials_t[codepoint][tag]) then -- not a language-specific codepoint?
return false, text, pos, mw.ustring.char (codepoint); -- codepoint not known; return false with codepoint position and character representation
end
end
return true, text; -- is known; return <text>
end
--[[--------------------------< _ L A N G >--------------------------------------------------------------------
Entry point for {{lang}}.
There should be no reason to set parameters in the {{lang}} {{#invoke:}}
<includeonly>{{#invoke:lang|lang}}</includeonly>
Parameters are received from the template's frame (parent frame).
]]
local function _lang (args)
local out = {};
local language_name; -- used to make category names
local category_name; -- same as language_name except that it retains any parenthetical disambiguators (if any) from the data set
local subtags = {}; -- IETF subtags script, region, variant, and private
local code; -- the language code
local msg; -- for error messages
local tag = 'span'; -- initial value for make_text_html()
local template = args.template or cfg.templates_t.lang;
maint_cats = {}; -- initialize because when this module required into another module, these only declared once so only initialzed once
maint_msgs = {};
validate_cat_args (args); -- determine if categorization should be suppressed
if args[1] and args.code then
return make_error_msg (substitute (cfg.lang_t.conflict_n_param, {'1', cfg.lang_t.conflict_n_param_types.code}), args, template);
else
args.code = args[1] or args.code; -- prefer args.code
end
if args[2] and args.text then
return make_error_msg (substitute (cfg.lang_t.conflict_n_param, {'2', cfg.lang_t.conflict_n_param_types.text}), args, template);
else
args.text = args[2] or args.text; -- prefer args.text
end
msg = validate_text (template, args); -- ensure that |text= is set
if is_set (msg) then -- msg is an already-formatted error message
return msg;
end
args.text, tag = html_tag_select (args.text); -- inspects text; returns appropriate HTML tag with text trimmed accordingly
args.rtl = args.rtl == cfg.keywords_t.affirmative; -- convert to boolean: 'yes' -> true, other values -> false
args.proto, msg = validate_proto (args.proto); -- return boolean, or nil, or nil and error message flag
if msg then
return make_error_msg (substitute (cfg.lang_t.invalid_proto, {msg}), args, template);
end
code, subtags.script, subtags.region, subtags.variant, subtags.private, msg = get_ietf_parts (args.code); -- |script=, |region=, |variant= not supported because they should be part of args.code ({{{1}}} in {{lang}})
if msg then
return make_error_msg (msg, args, template);
end
local is_latn_text, pos, char;
is_latn_text, args.text, pos, char= is_latin (args.text, code); -- make a boolean
msg = text_script_match_test (subtags.script, is_latn_text, pos, char)
if msg then -- if an error detected then there is an error message
return make_error_msg (msg, args, template);
end
args.italic, msg = validate_italic (args);
if msg then
return make_error_msg (msg, args, template);
end
if nil == args.italic then -- nil when |italic= absent or not set or |italic=default; args.italic controls
if ('latn' == subtags.script) or -- script is latn
(this_wiki_lang_tag ~= code and not is_set (subtags.script) and not has_poem_tag (args.text) and is_latn_text) then -- text not this wiki's language, no script specified and not in poem markup but is wholly latn script (auto-italics)
args.italic = 'italic'; -- DEFAULT for {{lang}} templates is upright; but if latn script set for font-style:italic
else
args.italic = 'inherit'; -- italic not set; script not latn; inherit current style
end
end
if is_set (subtags.script) then -- if script set, override rtl setting
if in_array (subtags.script, lang_data.rtl_scripts) then
args.rtl = true; -- script is an rtl script
else
args.rtl = false; -- script is not an rtl script
end
end
args.code = format_ietf_tag (code, subtags.script, subtags.region, subtags.variant, subtags.private); -- format to recommended subtag styles
language_name = language_name_get (args.code, code, true); -- get language name; try IETF tag first, then code w/o variant then code w/ variant
if cfg.keywords_t.invert == args.italic and 'span' == tag then -- invert only supported for in-line content
args.text = invert_italics (args.text)
end
args.text = proto_prefix (args.text, language_name, args.proto); -- prefix proto-language text with a splat
table.insert (out, make_text_html (args.code, args.text, tag, args.rtl, args.italic, args.size, language_name));
table.insert (out, make_category (code, language_name, args.nocat));
table.insert (out, render_maint (args.nocat)); -- maintenance messages and categories
return table.concat (out); -- put it all together and done
end
--[[--------------------------< L A N G >----------------------------------------------------------------------
Entry point for {{lang}}.
There should be no reason to set parameters in the {{lang}} {{#invoke:}}
<includeonly>{{#invoke:lang|lang}}</includeonly>
Parameters are received from the template's frame (parent frame).
]]
local function lang (frame)
local args_t = getArgs (frame, { -- this code so that we can detect and handle wiki list markup in text
valueFunc = function (key, value)
if 2 == key or 'text' == key then -- the 'text' parameter; do not trim wite space
return value; -- return untrimmed 'text'
elseif value then -- all other values: if the value is not nil
value = mw.text.trim (value); -- trim whitespace
if '' ~= value then -- empty string when value was only whitespace
return value;
end
end
return nil; -- value was empty or contained only whitespace
end -- end of valueFunc
});
args_t.fn = nil; -- unset because not supported but this function might have been called by {{lang|fn=lang|...}}
local msg = parameter_validate (args_t, cfg.templates_t.lang); -- verify that all supplied parameters are supported by {{lang-??}}
if msg then
return make_error_msg (msg, args_t, cfg.templates_t.lang); -- when template has unsupported params, abandon with error message
end
return _lang (args_t);
end
--[[--------------------------< T R A N S L A T I O N _ M A K E >----------------------------------------------
Stand-alone function to create literal translation of main text.
Also used by {{lang-x2}}.
]]
local function translation_make (args_t)
local translation_t = {', '}; -- initialize output
if 'none' ~= args_t.label then -- if we want a label
table.insert (translation_t, '<small>'); -- open the <small> HTML tag
if cfg.keywords_t.negative == args_t.link then
table.insert (translation_t, substitute ('<abbr title="$1">$2</abbr>', {cfg.translation_make_t.lit_xlation, cfg.translation_make_t.lit_abbr})); -- unlinked form
else
table.insert (translation_t, make_wikilink (cfg.translation_make_t.lit_xlation, cfg.translation_make_t.lit_abbr)); -- linked form
end
table.insert (translation_t, " </small>"); -- close the <small> HTML tag
end
table.insert (translation_t, table.concat ({ -- user styling spans match spand from {{gloss}}
'<span class="gloss-quot">\'</span>', -- user styling span for quote marks; use HTML entities to avoid wiki markup confusion
'<span class="gloss-text">', -- open user styling span for the translation
args_t.translation, -- the translation
'</span>', -- close user styling span for the translation
'<span class="gloss-quot">\'</span>' -- user styling span for quote marks
}));
return table.concat (translation_t); -- make a big string and done
end
--[[--------------------------< _ L A N G _ X X >--------------------------------------------------------------
For the {{lang-??}} templates, the only parameter required to be set in the template is the language code. All
other parameters can, usually should, be written in the template call. For {{lang-??}} templates for languages
that can have multiple writing systems, it may be appropriate to set |script= as well.
For each {{lang-??}} template choose the appropriate entry-point function so that this function knows the default
styling that should be applied to text.
For normal, upright style:
<includeonly>{{#invoke:lang|lang_xx_inherit|code=xx}}</includeonly>
For italic style:
<includeonly>{{#invoke:lang|lang_xx_italic|code=xx}}</includeonly>
All other parameters should be received from the template's frame (parent frame)
Supported parameters are:
|code = (required) the IANA language code
|script = IANA script code; especially for use with languages that use multiple writing systems
|region = IANA region code
|variant = IANA variant code
|text = (required) the displayed text in language specified by code
|link = boolean false ('no') does not link code-spcified language name to associated language article
|rtl = boolean true ('yes') identifies the language specified by code as a right-to-left language
|nocat = boolean true ('yes') inhibits normal categorization; error categories are not affected
|cat = boolian false ('no') opposite form of |nocat=
|italic = boolean true ('yes') renders displayed text in italic font; boolean false ('no') renders displayed text in normal font; not set renders according to initial_style_state
|lit = text that is a literal translation of text
|label = 'none' to suppress all labeling (language name, 'translit.', 'lit.')
any other text replaces language-name label - automatic wikilinking disabled
for those {{lang-??}} templates that support transliteration (those templates where |text= is not entirely latn script):
|translit = text that is a transliteration of text
|translit-std = the standard that applies to the transliteration
|translit-script = ISO 15924 script name; falls back to code
For {{lang-??}}, the positional parameters are:
{{{1}}} text
{{{2}}} transliterated text
{{{3}}} literal translation text
no other positional parameters are allowed
]]
local function _lang_xx (args, base_template) -- base_template will be either of 'langx' or 'lang-xx'
local out = {};
local language_name; -- used to make display text, article links
local category_name; -- same as language_name except that it retains any parenthetical disambiguators (if any) from the data set
local subtags = {}; -- IETF subtags script, region, and variant
local code; -- the language code
local translit_script_name; -- name associated with IANA (ISO 15924) script code
local translit;
local msg; -- for error messages
local tag = 'span'; -- initial value for make_text_html()
local template = args.template or base_template;
maint_cats = {}; -- initialize because when this module required into another module, these only declared once so only initialzed once
maint_msgs = {};
local text_idx = (cfg.templates_t.langx == base_template) and 2 or 1; -- for {{langx}} 'text' positional parameter is '2'
local translit_idx = (cfg.templates_t.langx == base_template) and 3 or 2;
local xlate_idx = (cfg.templates_t.langx == base_template) and 4 or 3;
if args[text_idx] and args.text then
return make_error_msg (substitute (cfg.lang_t.conflict_n_param, {text_idx, cfg.lang_t.conflict_n_param_types.text}), args, template);
else
args.text = args[text_idx] or args.text; -- prefer positional 'text' parameter
end
msg = validate_text (template, args); -- ensure that |text= is set, does not contain italic markup and is protected from improper bolding
if is_set (msg) then
return msg;
end
args.text, tag = html_tag_select (args.text); -- inspects text; returns appropriate HTML tag with text trimmed accordingly
if args[translit_idx] and args.translit then
return make_error_msg (substitute (cfg.lang_t.conflict_n_param, {translit_idx, cfg.lang_t.conflict_n_param_types.translit}), args, template);
else
args.translit = args[translit_idx] or args.translit -- prefer positional 'translit' parameter
end
args.engvar = cfg.engvar_sel_t[args.engvar] or cfg.default_engvar; -- |engvar= when valid; cfg.default_engvar else
if args[xlate_idx] and (args.translation or args.lit) then
return make_error_msg (substitute (cfg.lang_xx_t.conflict_n_lit, {xlate_idx}), args, template);
elseif args.translation and args.lit then
return make_error_msg (cfg.lang_xx_t.conflict_lit, args, template);
else
args.translation = args[xlate_idx] or args.translation or args.lit; -- prefer positional 'translation' parameter
end
if args.links and args.link then
return make_error_msg (cfg.lang_xx_t.conflict_link, args, template);
else
args.link = args.link or args.links; -- prefer args.link
end
validate_cat_args (args); -- determine if categorization should be suppressed
args.rtl = args.rtl == cfg.keywords_t.affirmative; -- convert to boolean: 'yes' -> true, other values -> false
code, subtags.script, subtags.region, subtags.variant, subtags.private, msg = get_ietf_parts (args.code, args.script, args.region, args.variant); -- private omitted because private
if msg then -- if an error detected then there is an error message
return make_error_msg (msg, args, template);
end
if args.translit then
local latn, pos, char;
latn, args.translit, pos, char = is_latin (args.translit, (('' ~= subtags.private) and (code .. '-x-' .. subtags.private)) or code);
if not latn then
return make_error_msg (substitute (cfg.lang_xx_t.translit_nonlatn, {pos, char}), args, template);
end
end
local is_latn_text, text, pos, char = is_latin (args.text, code); -- make a boolean
args.text = text; -- may have been modified (accept-as-written markup removed)
msg = text_script_match_test (subtags.script, is_latn_text, pos, char)
if msg then -- if an error detected then there is an error message
return make_error_msg (msg, args, template);
end
args.italic, msg = validate_italic (args);
if msg then
return make_error_msg (msg, args, template);
end
if cfg.templates_t.langx == base_template then -- auto-italics for {{langx}} templates; adapted from {{lang}} (no support for poem tag)
if nil == args.italic then -- nil when |italic= absent or not set or |italic=default; args.italic controls
if ('latn' == subtags.script) or -- script is latn
(this_wiki_lang_tag ~= code and not is_set (subtags.script) and is_latn_text) then -- text is not this wiki's language, no script specified and is wholly latn script (auto-italics)
args.italic = 'italic'; -- set font-style:italic
else
args.italic = 'inherit'; -- italic not set; script not latn; inherit current style
end
end
else -- {{lang-xx}} does not do auto italics; retained for those wikis that don't support {{langx}}
if nil == args.italic then -- args.italic controls
if is_set (subtags.script) then
if 'latn' == subtags.script then
args.italic = 'italic'; -- |script=Latn; set for font-style:italic
else
args.italic = initial_style_state; -- italic not set; script is not latn; set for font-style:<initial_style_state>
end
else
args.italic = initial_style_state; -- here when |italic= and |script= not set; set for font-style:<initial_style_state>
end
end
end
if is_set (subtags.script) then -- if script set override rtl setting
if in_array (subtags.script, lang_data.rtl_scripts) then
args.rtl = true; -- script is an rtl script
else
args.rtl = false; -- script is not an rtl script
end
end
args.proto, msg = validate_proto (args.proto); -- return boolean, or nil, or nil and error message flag
if msg then
return make_error_msg (substitute (cfg.lang_t.invalid_proto, {args.proto}), args, template);
end
args.code = format_ietf_tag (code, subtags.script, subtags.region, subtags.variant, subtags.private); -- format to recommended subtag styles
language_name = language_name_get (args.code, code, true); -- get language name; try IETF tag first, then code w/o variant then code w/ variant
category_name = language_name; -- category names retain IANA parenthetical diambiguators (if any)
language_name = language_name:gsub ('%s+%b()', ''); -- remove IANA parenthetical disambiguators or qualifiers from names that have them
if args.label then
if 'none' ~= args.label then
table.insert (out, table.concat ({args.label, ': '})); -- custom label
end
else
if cfg.keywords_t.negative == args.link then
table.insert (out, language_name); -- language name without wikilink
else
if mw.ustring.find (language_name, 'languages', 1, true) then
table.insert (out, make_wikilink (language_name)); -- collective language name uses simple wikilink
elseif lang_data.article_name[args.code:lower()] then -- is IETF tag in article name over ride?
table.insert (out, make_wikilink (lang_data.article_name[args.code:lower()], language_name)); -- language name with wikilink from override data
elseif lang_data.article_name[code] then -- is language tag in article override
table.insert (out, make_wikilink (lang_data.article_name[code], language_name)); -- language name with wikilink from override data
else
table.insert (out, make_wikilink (substitute ('$1 $2', {language_name, cfg.misc_text_t.language}), language_name)); -- language name with wikilink
end
end
table.insert (out, ': '); -- separator
end
if cfg.keywords_t.invert == args.italic then
args.text = invert_italics (args.text)
end
args.text = proto_prefix (args.text, language_name, args.proto); -- prefix proto-language text with a splat
table.insert (out, make_text_html (args.code, args.text, tag, args.rtl, args.italic, args.size, ('none' == args.label) and language_name or nil))
if is_set (args.translit) and not is_latn_text then -- transliteration; not supported when args.text is wholly latn text (this is an imperfect test)
table.insert (out, ', '); -- comma to separate text from translit
if 'none' ~= args.label then
table.insert (out, '<small>');
if script_table[args['translit-script']] then -- when |translit-script= is set, try to use the script's name
translit_script_name = script_table[args['translit-script']];
else
translit_script_name = language_name; -- fall back on language name
end
local translit_title_obj = mw.title.makeTitle (0, substitute ('$1 $2',{cfg.lang_xx_t.romanization, translit_script_name})); -- make a title object; no engvar, article titles use US spelling
if translit_title_obj.exists and (cfg.keywords_t.negative ~= args.link) then
table.insert (out, make_wikilink (substitute ('$1 $2', {cfg.lang_xx_t.romanization, translit_script_name or language_name}),
substitute ('$1', {cfg.engvar_t[args.engvar]['romanisz_pt']})) .. ':'); -- make a wikilink if there is an article to link to; engvar the display text
else
table.insert (out, substitute ('$1:', {cfg.engvar_t[args.engvar]['romanisz_pt']})); -- else plain text per engvar
end
table.insert (out, ' </small>'); -- close the small tag
end
translit = make_translit (args.code, language_name, args.translit, args['translit-std'], args['translit-script'], nil, args.engvar)
if is_set (translit) then
table.insert (out, translit);
else
return make_error_msg (substitute ('$1: $2', {cfg.lang_xx_t.invalid_xlit_std, args['translit-std'] or '[missing]'}), args, template);
end
elseif is_set (args.translit) and is_latn_text then -- when creating a transliteration of Latn script <text>
return make_error_msg (cfg.lang_xx_t.xlit_of_latn, args, template); -- emit error message and abandon
end
if is_set (args.translation) then -- translation (not supported in {{lang}})
table.insert (out, translation_make (args));
end
table.insert (out, make_category (code, category_name, args.nocat));
table.insert (out, render_maint(args.nocat)); -- maintenance messages and categories
return table.concat (out); -- put it all together and done
end
--[[--------------------------< L A N G _ X X _ A R G S _ G E T >----------------------------------------------
Common function to get args table from {{lang-??}} templates.
Returns table of args.
Text positional parameters are not trimmed here but are selectively trimmed at html_tag_select().
]]
local function lang_xx_args_get (frame, base_template)
local args_t = getArgs(frame,
{
parentFirst= true, -- parameters in the template override parameters set in the {{#invoke:}}
valueFunc = function (key, value)
if ((cfg.templates_t.langx == base_template) and 2 or 1) == key then -- the 'text' positional parameter; 1 for {{lang-??}}, 2 for {{langx}}; do not trim wite space
return value; -- return untrimmed 'text' positional parameter
elseif value then -- all other values: if the value is not nil
value = mw.text.trim (value); -- trim whitespace
if '' ~= value then -- empty string when value was only whitespace
return value;
end
end
return nil; -- value was empty or contained only whitespace
end -- end of valueFunc
});
return args_t;
end
--[[--------------------------< L A N G _ X X _ I T A L I C >--------------------------------------------------
Entry point for those {{lang-??}} templates that call lang_xx_italic(). Sets the initial style state to italic.
]]
local function lang_xx_italic (frame)
local args = lang_xx_args_get (frame, cfg.templates_t.langxx);
args.fn = nil; -- unset because not supported but this function might have been called by {{lang|fn=lang_xx_italic|...}}
local msg = parameter_validate (args, cfg.templates_t.langxx); -- verify that all supplied parameters are supported by {{lang-??}}
if msg then
return make_error_msg (msg, args, cfg.templates_t.langxx); -- when template has unsupported params, abandon with error message
end
initial_style_state = 'italic';
return _lang_xx (args, cfg.templates_t.langxx) .. '[[Category:Pages using Lang-xx templates]]'; -- temporary category
end
--[[--------------------------< _ L A N G _ X X _ I T A L I C >------------------------------------------------
Entry point from another module. Sets the initial style state to italic.
]]
local function _lang_xx_italic (args)
initial_style_state = 'italic';
return _lang_xx (args, cfg.templates_t.langxx);
end
--[[--------------------------< L A N G _ X X _ I N H E R I T >------------------------------------------------
Entry point for those {{lang-??}} templates that call lang_xx_inherit(). Sets the initial style state to inherit.
]]
local function lang_xx_inherit (frame)
local args = lang_xx_args_get (frame, cfg.templates_t.langxx);
args.fn = nil; -- unset because not supported but this function might have been called by {{lang|fn=lang_xx_inherit|...}}
local msg = parameter_validate (args, cfg.templates_t.langxx); -- verify that all supplied parameters are supported by {{lang-??}}
if msg then
return make_error_msg (msg, args, cfg.templates_t.langxx); -- when template has unsupported params, abandon with error message
end
initial_style_state = 'inherit';
return _lang_xx (args, cfg.templates_t.langxx) .. '[[Category:Pages using Lang-xx templates]]'; -- temporary category
end
--[[--------------------------< _ L A N G _ X X _ I N H E R I T >----------------------------------------------
Entry point from another module. Sets the initial style state to inherit.
]]
local function _lang_xx_inherit (args)
initial_style_state = 'inherit';
return _lang_xx (args, cfg.templates_t.langxx);
end
--[[--------------------------< _ L A N G X >------------------------------------------------------------------
Entry point from another module.
]]
local function _langx (args_t)
local langx_data = mw.loadData ('Module:Lang/langx'); -- get necessary data
local rtl_t = langx_data.rtl_t; -- get list of language tags for languages that are rendered right-to-left
local link_t = langx_data.link_t; -- get list of language tags for {{lang-??}} templates that set |link=<something>
local size_t = langx_data.size_t; -- get list of language tags for {{lang-??}} templates that set |size=<something>
local msg = parameter_validate (args_t, cfg.templates_t.langx);
if msg then
return make_error_msg (msg, args_t, cfg.templates_t.langx);
end
args_t.code = args_t[1] or args_t.code; -- get the language tag; must be {{{1}}} or |code=
if not args_t.code then
return make_error_msg (cfg.get_ietf_parts_t.missing_lang_tag, args_t, cfg.templates_t.langx);
end
args_t.rtl = args_t.rtl or (rtl_t[args_t.code] and cfg.keywords_t.affirmative); -- prefer |rtl= in template call, use rtl_t else
args_t.link = args_t.link or link_t[args_t.code]; -- prefer |link= in template call, use link_t felse
args_t.size = args_t.size or size_t[args_t.code]; -- prefer |size= in template call, use size_t else
args_t[1] = nil; -- unset to mimic {{lang-??}} templates which set |code=xx
local lang_subtag = args_t.code; -- use only the base language subtag for unsupported tag test; some args_t.code are modified by |script= etc
return _lang_xx (args_t, cfg.templates_t.langx);
end
--[[--------------------------< L A N G X >--------------------------------------------------------------------
Entry point for {{langx}}.
this function calls _lang_xx() to render non-English text. The {{lang-??}} templates have three positional paramters
but {{langx}} has four:
| 1 | 2 | 3 | 4
{{lang-xx |<text> |<xlit> |<xlat> }}
{{langx |<tag> |<text> |<xlit> |<xlat> }}
The calls to lang_xx_args_get() and _lang_xx() use 'langx' as a flag for those functions to select the proper
positional parameters.
{{lang-??}} depends on the calling template to select 'inherit' or 'italic' to establish the default rendering.
{{langx}} can't do that. The initial version of {{langx}} relied on a list of language tags (inherit_t in ~/langx)
scraped from those {{lang-??}} templates that call lang_xx_inherit() to render text in upright font. langx() now
uses auto-italics code adapted from {{lang}} (doesn't support poem tags).
]]
local function langx (frame)
local args_t = lang_xx_args_get (frame, cfg.templates_t.langx); -- get the arguments; 'langx' is the <base_template> used to decide which positional param is 'text', 'translit', 'lit'
return _langx (args_t);
end
--[[--------------------------< _ I S _ I E T F _ T A G >------------------------------------------------------
Returns true when a language name associated with IETF language tag exists; nil else. IETF language tag must be valid.
All code combinations supported by {{lang}} and the {{lang-??}} templates are supported by this function.
Module entry point from another module.
]]
local function _is_ietf_tag (tag) -- entry point when this module is require()d into another
local c, s, r, v, p, err; -- code, script, region, variant, private, error message
c, s, r, v, p, err = get_ietf_parts (tag); -- disassemble tag into constituent part and validate
return ((c and not err) and true) or nil; -- return true when code portion has a value without error message; nil else
end
--[[--------------------------< I S _ I E T F _ T A G >--------------------------------------------------------
Module entry point from an {{#invoke:}}.
]]
local function is_ietf_tag (frame)
return _is_ietf_tag (getArgs (frame)[1]); -- args[1] is the IETF language tag to be tested; also get parent frame
end
--[[--------------------------< I S _ I E T F _ T A G _ F R A M E >--------------------------------------------
Module entry point from an {{#invoke:}}; same as is_ietf_tag() except does not get parameters from the parent
(template) frame. This function not useful when called by {{lang|fn=is_ietf_tag_frame|<tag>}} because <tag>
is in the parent frame.
]]
local function is_ietf_tag_frame (frame)
return _is_ietf_tag (getArgs (frame, {frameOnly = true,})[1]); -- args[1] is the IETF language tag to be tested; do not get parent frame
end
--[[--------------------------< _ N A M E _ F R O M _ T A G >--------------------------------------------------
Returns language name associated with IETF language tag if valid; error message else.
All code combinations supported by {{lang}} and the {{lang-??}} templates are supported by this function.
Set invoke's |link= parameter to yes to get wikilinked version of the language name.
Module entry point from another module.
]]
local function _name_from_tag (args)
local subtags = {}; -- IETF subtags script, region, variant, and private
local raw_code = args[1]; -- save a copy of the input IETF subtag
local link = cfg.keywords_t.affirmative == args['link']; -- make a boolean
local label = args.label;
local code; -- the language code
local msg; -- gets an error message if IETF language tag is malformed or invalid
local language_name = '';
code, subtags.script, subtags.region, subtags.variant, subtags.private, msg = get_ietf_parts (raw_code);
if msg then
local template = (args['template'] and table.concat ({'{{', args['template'], '}}: '})) or ''; -- make template name (if provided by the template)
return make_error_span (template, msg);
end
raw_code = format_ietf_tag (code, subtags.script, subtags.region, subtags.variant, subtags.private); -- format to recommended subtag styles; private omitted because private
language_name = language_name_get (raw_code, code); -- get language name; try IETF tag first, then code w/o variant then code w/ variant
if 'yes' ~= args.raw then
language_name = language_name:gsub ('%s+%b()', ''); -- remove IANA parenthetical disambiguators or qualifiers from names that have them
end
if link then -- when |link=yes, wikilink the language name
if mw.ustring.find (language_name, 'languages', 1, true) then
language_name = make_wikilink (language_name, label); -- collective language name uses simple wikilink
elseif lang_data.article_name[raw_code:lower()] then -- is IETF tag in article name override?
language_name = make_wikilink (lang_data.article_name[raw_code:lower()], label or language_name); -- language name with wikilink from override data
elseif lang_data.article_name[code] then -- is language tag in article name override?
language_name = make_wikilink (lang_data.article_name[code], label or language_name); -- language name with wikilink from override data
else
language_name = make_wikilink (substitute ('$1 $2', {language_name, cfg.misc_text_t.language}), label or language_name); -- language name with wikilink
end
end
return language_name;
end
--[[--------------------------< N A M E _ F R O M _ T A G >----------------------------------------------------
Module entry point from an {{#invoke:}}.
]]
local function name_from_tag (frame) -- entry point from an {{#invoke:lang|name_from_tag|<IETF tag>|link=<yes>|template=<template name>}}
return _name_from_tag (getArgs(frame)) -- pass-on the args table, nothing else; getArgs() so we also get parent frame
end
--[[--------------------------< _ T A G _ F R O M _ N A M E >--------------------------------------------------
Returns the IETF language tag associated with the language name. Spelling of language name must be correct
according to the spelling in the source tables. When a standard language name has a parenthetical disambiguator,
that disambiguator must be omitted (they are not present in the data name-to-tag tables).
Module entry point from another module.
]]
local function _tag_from_name (args) -- entry point from another module
local msg;
if args[1] and '' ~= args[1] then
local data = mw.loadData ('Module:Lang/tag from name'); -- get the reversed data tables TODO: change when going live
local lang = args[1]:lower(); -- allow any-case for the language name (speeling must till be correct)
local tag = data.rev_override_table[lang] or data.rev_lang_table[lang] or data.rev_lang_dep_table[lang]; -- get the code; look first in the override then in the standard
if tag then
return tag, true; -- language name found so return tag and done; second return used by is_lang_name()
else
msg = substitute (cfg.tag_from_name_t.lang_not_found, {args[1]}); -- language name not found, error message
end
else
msg = cfg.tag_from_name_t.missing_lang_name; -- language name not found, error message
end
local template = '';
if args.template and '' ~= args.template then
template = table.concat ({'{{', args['template'], '}}: '}); -- make template name (if provided by the template)
end
return make_error_span (template, msg);
end
--[[--------------------------< T A G _ F R O M _ N A M E >----------------------------------------------------
Module entry point from an {{#invoke:}}.
]]
local function tag_from_name (frame) -- entry point from an {{#invoke:lang|tag_from_name|<language name>|link=<yes>|template=<template name>}}
local result, _ = _tag_from_name (getArgs(frame)) -- pass-on the args table, nothing else; getArgs() so we also get parent frame; supress second return used by is_lang_name()
return result;
end
--[[--------------------------< I S _ L A N G _ N A M E >------------------------------------------------------
Module entry point from an {{#invoke:}}.
]]
local function is_lang_name (frame)
local _, result = _tag_from_name (getArgs(frame)) -- pass-on the args table, nothing else; getArgs() so we also get parent frame; supress second return used by tag_from_name()
return result and true or nil;
end
--[[--------------------------< _ X L I T >--------------------------------------------------------------------
Module entry point from another module.
]]
local function _xlit (args)
local title_table = lang_data.translit_title_table; -- table of transliteration standards and the language codes and scripts that apply to those standards
local language_name; -- language name that matches language code; used for tool tip
local translit; -- transliterated text to display
local script; -- IANA script
local msg; -- for when called functions return an error message
local template = args.template or cfg.templates_t.transliteration;
maint_cats = {}; -- initialize because when this module required into another module, these only declared once so only initialzed once
maint_msgs = {};
if is_set (args[3]) then -- [3] set when {{transliteration|code|standard|text}}
args.text = args[3]; -- get the transliterated text
args.translit_std = args[2] and args[2]:lower(); -- get the standard; lower case for table indexing
if not title_table[args.translit_std] then
return make_error_msg (substitute (cfg.transl_t.unrecog_xlit_std, {args.translit_std}), args, template);
end
else
if is_set (args[2]) then -- [2] set when {{transliteration|code|text}}
args.text = args[2]; -- get the transliterated text
else
if args[1] and (args[1]:match ('^%a%a%a?%a?$') or -- args[2] missing; is args[1] a language or script tag or is it the transliterated text?
args[1]:match ('^%a%a%a?%-x%-')) then -- or is args[1] a private-use tag
return make_error_msg (cfg.transl_t.no_text, args, template); -- args[1] is a code so we're missing text
else
args.text = args[1]; -- args[1] is not a code so we're missing that; assign args.text for error message
return make_error_msg (cfg.transl_t.missing_lang_scr, args, template);
end
end
end
if is_set (args[1]) then -- IANA language code used for HTML lang= attribute; or ISO 15924 script code
if args[1]:match ('^%a%a%a?%a?$') or args[1]:match ('^%a%a%a?%-x%-') then -- args[1] has correct form?
args.code = args[1]:lower(); -- use the language/script code; only (2, 3, or 4 alpha characters) or private-use; lower case because table indexes are lower case
else
return make_error_msg (substitute (cfg.transl_t.unrecog_lang_scr, {args[1]}), args, template); -- invalid language / script code
end
else
return make_error_msg (cfg.transl_t.missing_lang_scr, args, template); -- missing language / script code so quit
end
local is_latn_text, pos, char;
is_latn_text, args.text, pos, char= is_latin (args.text, args.code); -- is latn text? strip accept-as-written markup
if not is_latn_text then -- when text is not latn
return make_error_msg (substitute (cfg.lang_xx_t.translit_nonlatn, {pos, char}), args, template); -- abandon with error message
end
args.italic, msg = validate_italic (args);
if msg then
return make_error_msg (msg, args, template);
end
if 'italic' == args.italic then -- 'italic' when |italic=yes; because that is same as absent or not set and |italic=default
args.italic = nil; -- set to nil;
end
args.engvar = cfg.engvar_sel_t[args.engvar] or cfg.default_engvar; -- |engvar= when valid; cfg.default_engvar else
if override_table[args.code] then -- is code a language code defined in the override table?
language_name = override_table[args.code];
args.code = args.code:match ('^%a%a%a?'); -- if private use, strip all but language subtag
elseif lang_table[args.code] then -- is code a language code defined in the standard language code tables?
language_name = lang_table[args.code];
elseif lang_dep_table[args.code] then -- is code a language code defined in the deprecated language code tables?
language_name = lang_dep_table[args.code];
elseif script_table[args.code] then -- if here, code is not a language code; is it a script code?
language_name = script_table[args.code];
script = args.code; -- code was an ISO 15924 script so use that instead
args.code = ''; -- unset because not a language code
else
return make_error_msg (substitute (cfg.transl_t.unrecog_lang_scr, {args.code}), args, template); -- invalid language / script code
end
-- here only when all parameters passed to make_translit() are valid
return make_translit (args.code, language_name, args.text, args.translit_std, script, args.italic, args.engvar);
end
--[[--------------------------< X L I T >----------------------------------------------------------------------
Module entry point from an {{#invoke:}}.
]]
local function xlit (frame)
return _xlit (getArgs(frame));
end
--[[--------------------------< C A T E G O R Y _ F R O M _ T A G >--------------------------------------------
Returns category name associated with IETF language tag if valid; error message else.
All code combinations supported by {{lang}} and the {{lang-??}} templates are supported by this function.
Module entry point from another module.
]]
local function _category_from_tag (args_t)
local subtags = {}; -- IETF subtags script, region, variant, and private
local raw_code = args_t[1]; -- save a copy of the input IETF subtag
local link = cfg.keywords_t.affirmative == args_t.link; -- make a boolean
local label = args_t.label;
local code; -- the language code
local msg; -- gets an error message if IETF language tag is malformed or invalid
local category_name = '';
code, subtags.script, subtags.region, subtags.variant, subtags.private, msg = get_ietf_parts (raw_code);
if msg then
local template = (args_t.template and table.concat ({'{{', args_t.template, '}}: '})) or ''; -- make template name (if provided by the template)
return make_error_span (template, msg);
end
raw_code = format_ietf_tag (code, subtags.script, subtags.region, subtags.variant, subtags.private); -- format to recommended subtag styles; private omitted because private
category_name = language_name_get (raw_code, code); -- get language name; try IETF tag first, then code w/o variant then code w/ variant
category_name = make_category (code, category_name, nil, true):gsub ('[%[%]]', '');
if link then
return table.concat ({'[[:', category_name, ']]'});
else
return category_name;
end
end
--[[--------------------------< C A T E G O R Y _ F R O M _ T A G >--------------------------------------------
Module entry point from an {{#invoke:}}.
]]
local function category_from_tag (frame) -- entry point from an {{#invoke:lang|category_from_tag|<IETF tag>|template=<template name>}}
return _category_from_tag (getArgs (frame)); -- pass-on the args table, nothing else; getArgs() so we also get parent frame
end
--[[--------------------------< E X P O R T E D F U N C T I O N S >------------------------------------------
]]
return {
category_from_tag = category_from_tag, -- frame entry points when this module is #invoke:ed into templates/wikitext
lang = lang, -- entry point for {{lang}}
langx = langx, -- entry point for {{langx}}
lang_xx_inherit = lang_xx_inherit, -- entry points for {{lang-??}}
lang_xx_italic = lang_xx_italic,
is_ietf_tag = is_ietf_tag,
is_ietf_tag_frame = is_ietf_tag_frame,
is_lang_name = is_lang_name,
tag_from_name = tag_from_name, -- returns IETF tag associated with language name
name_from_tag = name_from_tag, -- used for template documentation; possible use in ISO 639 name from code templates
xlit = xlit, -- entry point for {{transliteration}}
_category_from_tag = _category_from_tag, -- API entry points when this module is require()d into other modules
_lang = _lang,
_langx = _langx,
_lang_xx_inherit = _lang_xx_inherit,
_lang_xx_italic = _lang_xx_italic,
_is_ietf_tag = _is_ietf_tag,
get_ietf_parts = get_ietf_parts,
_tag_from_name = _tag_from_name,
_name_from_tag = _name_from_tag,
_xlit = _xlit,
_translation_make = translation_make,
};
4lchs3y6tbwcup48cwp3ayuhrxmusvw
360849
360848
2026-05-18T04:58:14Z
ChiK
1136
೧ revisions imported from [[:en:Module:Lang]]
360848
Scribunto
text/plain
--[=[
Lua support for the {{lang}}, {{langx}}, {{lang-??}}, and {{transliteration}} templates and replacement of various supporting templates.
]=]
require('strict');
local getArgs = require ('Module:Arguments').getArgs;
local unicode = require ("Module:Unicode data"); -- for is_Latin() and is_rtl()
local yesno = require ('Module:Yesno');
local sandbox = (mw.getCurrentFrame():getTitle():match ('/sandbox') or ''); -- when called from a sandbox template or module load sandbox data and sandbox configuration
local lang_data = mw.loadData ('Module:Lang/data' .. sandbox); -- language name override and transliteration tool-tip tables
local lang_name_table = lang_data.lang_name_table; -- language codes, names, regions, scripts, suppressed scripts
local lang_table = lang_data.lang_name_table.lang;
local lang_dep_table = lang_data.lang_name_table.lang_dep;
local script_table = lang_data.lang_name_table.script;
local region_table = lang_data.lang_name_table.region;
local variant_table = lang_data.lang_name_table.variant;
local suppressed_table = lang_data.lang_name_table.suppressed;
local override_table = lang_data.override;
local synonym_table = mw.loadData ('Module:Lang/ISO 639 synonyms'); -- ISO 639-2/639-2T code translation to 639-1 code
local cfg = mw.loadData ('Module:Lang/configuration' .. sandbox); -- for internationalization
local is_latn_data = mw.loadData ('Module:Lang/data/is latn data');
local sizeof_ranges_t = is_latn_data.sizeof_ranges_t;
local namespace = mw.title.getCurrentTitle().namespace; -- used for categorization
local content_lang = mw.language.getContentLanguage();
local this_wiki_lang_tag = content_lang.code; -- get this wiki's language tag
local this_wiki_lang_dir = content_lang:getDir(); -- get this wiki's language direction
local initial_style_state; -- set by lang_xx_normal() and lang_xx_italic()
local maint_cats = {}; -- maintenance categories go here
local maint_msgs = {}; -- and their messages go here
--[[--------------------------< M A K E _ E R R O R _ S P A N >--------------------------------------------------
]]
local function make_error_span (template, msg)
return table.concat ({'<span style="color:var(--color-error,#d33)">', cfg.misc_text_t.error, ': ', template, msg, '</span>'})
end
--[[--------------------------< S U B S T I T U T E >----------------------------------------------------------
Substitutes $1, $2, etc in <message> with data from <data_t>. Returns plain-text substituted string when
<data_t> not nil; returns <message> else.
]]
local function substitute (message, data_t)
return data_t and mw.message.newRawMessage (message, data_t):plain() or message;
end
--[[--------------------------< M A K E _ E R R O R _ M S G >--------------------------------------------------
Assembles an error message from template name, message text, help link, and error category.
]]
local function make_error_msg (msg, args_t, template)
local category;
local text; -- handle the oddity that is {{langx}}
if cfg.templates_t.langxx == template then
text = args_t.text or args_t[1]; -- for {{lang-xx}}
else
text = args_t.text or args_t[2]; -- for {{lang}}, {{langx}}, and {{transliteration}}
end
if cfg.templates_t.transliteration == template then
category = cfg.make_error_msg_t.xlit_err_cat;
else
category = cfg.make_error_msg_t.lang_err_cat;
end
local category_link = ((0 == namespace or 10 == namespace) and not args_t.nocat) and substitute ('[[Category:$1]]', {category}) or '';
return substitute ('[$1] <span style="color:var(--color-error,#d33)">$2: {{$3}}: $4 ([[:Category:$5|$6]])</span>$7', -- { prevents template name from being treated as a template call in certain situations
{
text or cfg.make_error_msg_t.undefined,
cfg.misc_text_t.error,
template,
msg,
category,
cfg.misc_text_t.help,
category_link
})
end
--[[--------------------------< P A R A M E T E R _ V A L I D A T E >------------------------------------------
]]
local function parameter_validate (args_t, template)
local err_msg = cfg.parameter_validate_t.invalid_param;
if cfg.templates_t.lang == template then -- for {{lang}}
for param, _ in pairs (args_t) do
if not cfg.known_params_t.params_lang_t[param] and -- unique {{lang}} parameters
not cfg.known_params_t.common_params_all_t[param] then -- common to all
return substitute (err_msg, {param}); -- <param> not found so abandon
end
end
elseif cfg.templates_t.langx == template then -- for {{langx}}
for param, _ in pairs (args_t) do
if not cfg.known_params_t.params_langx_t[param] and -- unique {{langx}} parameters
not cfg.known_params_t.params_x_t[param] and -- common to {{langx}} and {{lang-xx}}
not cfg.known_params_t.common_params_all_t[param] then -- common to all
return substitute (err_msg, {param}); -- <param> not found so abandon
end
end
elseif cfg.templates_t.langxx == template then -- for {{lang-xx}}
for param, _ in pairs (args_t) do
if not cfg.known_params_t.params_lang_xx_t[param] and -- unique {{lang-xx}} parameters
not cfg.known_params_t.params_x_t[param] and -- common to {{langx}} and {{lang-xx}}
not cfg.known_params_t.common_params_all_t[param] then -- common to all
return substitute (err_msg, {param}); -- <param> not found so abandon
end
end
end
end
--[[--------------------------< I S _ S E T >------------------------------------------------------------------
Returns true if argument is set; false otherwise. Argument is 'set' when it exists (not nil) or when it is not
an empty string.
]]
local function is_set (var)
return not (var == nil or var == '');
end
--[[--------------------------< I N V E R T _ I T A L I C S >-------------------------------------------------
This function attempts to invert the italic markup a args.text by adding/removing leading/trailing italic markup
in args.text. Like |italic=unset, |italic=invert disables automatic italic markup. Individual leading/trailing
apostrophes are converted to their HTML numeric entity equivalent so that the new italic markup doesn't become
bold markup inadvertently.
Leading and trailing wiki markup is extracted from args.text into separate table elements. Addition, removal,
replacement of wiki markup is handled by a string.gsub() replacement table operating only on these separate elements.
In the string.gsub() matching pattern, '.*' matches empty string as well as the three expected wiki markup patterns.
This function expects that markup in args.text is complete and correct; if it is not, oddness may result.
]]
local function invert_italics (source)
local invert_pattern_table = { -- leading/trailing markup add/remove/replace patterns
[""]="\'\'", -- empty string becomes italic markup
["\'\'"]="", -- italic markup becomes empty string
["\'\'\'"]="\'\'\'\'\'", -- bold becomes bold italic
["\'\'\'\'\'"]="\'\'\'", -- bold italic become bold
};
local seg = {};
source = source:gsub ("%f[\']\'%f[^\']", '''); -- protect single quote marks from being interpreted as bold markup
seg[1] = source:match ('^(\'\'+%f[^\']).+') or ''; -- get leading markup, if any; ignore single quote
seg[3] = source:match ('.+(%f[\']\'\'+)$') or ''; -- get trailing markup, if any; ignore single quote
if '' ~= seg[1] and '' ~= seg[3] then -- extract the 'text'
seg[2] = source:match ('^\'\'+%f[^\'](.+)%f[\']\'\'+$') -- from between leading and trailing markup
elseif '' ~= seg[1] then
seg[2] = source:match ('^\'\'+%f[^\'](.+)') -- following leading markup
elseif '' ~= seg[3] then
seg[2] = source:match ('(.+)%f[\']\'\'+$') -- preceding trailing markup
else
seg[2] = source -- when there is no markup
end
seg[1] = invert_pattern_table[seg[1]] or seg[1]; -- replace leading markup according to pattern table
seg[3] = invert_pattern_table[seg[3]] or seg[3]; -- replace leading markup according to pattern table
return table.concat (seg); -- put it all back together and done
end
--[[--------------------------< V A L I D A T E _ I T A L I C >------------------------------------------------
Validates |italic= or |italics= assigned values.
When |italic= is set and has an acceptable assigned value, return the matching CSS font-style property value or,
for the special case 'default', return nil.
When |italic= is not set, or has an unacceptable assigned value, return nil and a nil error message.
When both |italic= and |italics= are set, returns nil and a 'conflicting' error message.
The return value nil causes the calling lang, lang_xx, or xlit function to set args.italic according to the template's
defined default ('inherit' for {{lang}}, 'inherit' or 'italic' for {{lang-??}} depending on
the individual template's requirements, 'italic' for {{transliteration}}) or to the value appropriate to |script=, if set ({{lang}}
and {{lang-??}} only).
Accepted values and the values that this function returns are are:
nil - when |italic= absent or not set; returns nil
default - for completeness, should rarely if ever be used; returns nil
yes - force args.text to be rendered in italic font; returns 'italic'
no - force args.text to be rendered in normal font; returns 'normal'
unset - disables font control so that font-style applied to text is dictated by markup inside or outside the template; returns 'inherit'
invert - disables font control so that font-style applied to text is dictated by markup outside or inverted inside the template; returns 'invert'
]]
local function validate_italic (args)
local properties = {[cfg.keywords_t.affirmative] = 'italic', [cfg.keywords_t.negative] = 'normal', [cfg.keywords_t.unset] = 'inherit', [cfg.keywords_t.invert] = 'invert', [cfg.keywords_t.default] = nil};
local count = 0
for _, arg in pairs {'italic', 'italics', 'i'} do
if args[arg] then
count = count + 1
end
end
if count > 1 then -- return nil and an error message if more than one is set
return nil, cfg.validate_italic_t.multi_italic;
end
return properties[args.italic or args.italics or args.i], nil; -- return an appropriate value and a nil error message
end
--[=[--------------------------< V A L I D A T E _ C A T _ A R G S >----------------------------------------------------------
Default behavior of the {{lang}} and {{lang-??}} templates is to add categorization when the templates are used in main space.
This default functionality may be suppressed by setting |nocat=yes or |cat=no. This function selects one of these two parameters
to control categorization.
Because having two parameters with 'opposite' names and 'opposite' values is confusing, this function accepts only affirmative
values for |nocat= and only negative values for |cat=; in both cases the 'other' sense (and non-sense) is not accepted and the
parameter is treated as if it were not set in the template.
Sets args.nocat to true if categorization is to be turned off; to nil if the default behavior should apply.
Accepted values for |nocat= are the text strings:
'yes', 'y', 'true', 't', on, '1' -- [[Module:Yesno]] returns logical true for all of these; false or nil else
for |cat=
'no', 'n', 'false', 'f', 'off', '0' -- [[Module:Yesno]] returns logical false for all of these; true or nil else
]=]
local function validate_cat_args (args)
if not (args.nocat or args.cat) then -- both are nil, so categorize
return;
end
if false == yesno (args.cat) or true == yesno (args.nocat) then
args.nocat = true; -- set to true when args.nocat is affirmative; nil else (as if the parameter were not set in the template)
else -- args.nocat is the parameter actually used.
args.nocat = nil;
end
end
--[[--------------------------< I N _ A R R A Y >--------------------------------------------------------------
Whether needle is in haystack.
]]
local function in_array (needle, haystack)
if needle == nil then
return false;
end
for n,v in ipairs (haystack) do
if v == needle then
return n;
end
end
return false;
end
--[[--------------------------< F O R M A T _ I E T F _ T A G >------------------------------------------------
Prettify IETF tags to use recommended subtag formats:
code: lower case
script: sentence case
region: upper case
variant: lower case
private: lower case prefixed with -x-
]]
local function format_ietf_tag (code, script, region, variant, private)
local out = {};
if is_set (private) then
return table.concat ({code:lower(), 'x', private:lower()}, '-'); -- if private, all other tags ignored
end
table.insert (out, code:lower());
if is_set (script) then
script = script:lower():gsub ('^%a', string.upper);
table.insert (out, script);
end
if is_set (region) then
table.insert (out, region:upper());
end
if is_set (variant) then
table.insert (out, variant:lower());
end
return table.concat (out, '-');
end
--[[--------------------------< G E T _ I E T F _ P A R T S >--------------------------------------------------
Extracts and returns IETF language tag parts:
primary language subtag (required) - 2 or 3 character IANA language code
script subtag - four character IANA script code
region subtag - two-letter or three digit IANA region code
variant subtag - four digit or 5-8 alnum variant code; only one variant subtag supported
private subtag - x- followed by 1-8 alnum private code; only supported with the primary language tag
in any one of these forms
lang lang-variant
lang-script lang-script-variant
lang-region lang-region-variant
lang-script-region lang-script-region-variant
lang-x-private
each of lang, script, region, variant, and private, when used, must be valid.
Languages with both two- and three-character code synonyms are promoted to the two-character synonym because
the IANA registry file omits the synonymous three-character code; we cannot depend on browsers understanding
the synonymous three-character codes in the lang= attribute.
For {{lang-??}} templates, the parameters |script=, |region=, and |variant= are supported (not supported in {{lang}}
because those parameters are superfluous to the IETF subtags in |code=).
Returns six values; all lower case. Valid parts are returned as themselves; omitted parts are returned as empty strings, invalid
parts are returned as nil; the sixth returned item is an error message (if an error detected) or nil.
See http://www.rfc-editor.org/rfc/bcp/bcp47.txt section 2.1.
]]
local function get_ietf_parts (source, args_script, args_region, args_variant)
local code, script, region, variant, private; -- IETF tag parts
if not is_set (source) then
return nil, nil, nil, nil, nil, cfg.get_ietf_parts_t.missing_lang_tag;
end
local pattern = { -- table of tables holding acceptable IETF tag patterns and short names of the IETF part captured by the pattern
{'^(%a%a%a?)%-(%a%a%a%a)%-(%a%a)%-(%d%d%d%d)$', 's', 'r', 'v'}, -- 1 - ll-Ssss-RR-variant (where variant is 4 digits)
{'^(%a%a%a?)%-(%a%a%a%a)%-(%d%d%d)%-(%d%d%d%d)$', 's', 'r', 'v'}, -- 2 - ll-Ssss-DDD-variant (where region is 3 digits; variant is 4 digits)
{'^(%a%a%a?)%-(%a%a%a%a)%-(%a%a)%-(%w%w%w%w%w%w?%w?%w?)$', 's', 'r', 'v'}, -- 3 - ll-Ssss-RR-variant (where variant is 5-8 alnum characters)
{'^(%a%a%a?)%-(%a%a%a%a)%-(%d%d%d)%-(%w%w%w%w%w%w?%w?%w?)$', 's', 'r', 'v'}, -- 4 - ll-Ssss-DDD-variant (where region is 3 digits; variant is 5-8 alnum characters)
{'^(%a%a%a?)%-(%a%a%a%a)%-(%d%d%d%d)$', 's', 'v'}, -- 5 - ll-Ssss-variant (where variant is 4 digits)
{'^(%a%a%a?)%-(%a%a%a%a)%-(%w%w%w%w%w%w?%w?%w?)$', 's', 'v'}, -- 6 - ll-Ssss-variant (where variant is 5-8 alnum characters)
{'^(%a%a%a?)%-(%a%a)%-(%d%d%d%d)$', 'r', 'v'}, -- 7 - ll-RR-variant (where variant is 4 digits)
{'^(%a%a%a?)%-(%d%d%d)%-(%d%d%d%d)$', 'r', 'v'}, -- 8 - ll-DDD-variant (where region is 3 digits; variant is 4 digits)
{'^(%a%a%a?)%-(%a%a)%-(%w%w%w%w%w%w?%w?%w?)$', 'r', 'v'}, -- 9 - ll-RR-variant (where variant is 5-8 alnum characters)
{'^(%a%a%a?)%-(%d%d%d)%-(%w%w%w%w%w%w?%w?%w?)$', 'r', 'v'}, -- 10 - ll-DDD-variant (where region is 3 digits; variant is 5-8 alnum characters)
{'^(%a%a%a?)%-(%d%d%d%d)$', 'v'}, -- 11 - ll-variant (where variant is 4 digits)
{'^(%a%a%a?)%-(%w%w%w%w%w%w?%w?%w?)$', 'v'}, -- 12 - ll-variant (where variant is 5-8 alnum characters)
{'^(%a%a%a?)%-(%a%a%a%a)%-(%a%a)$', 's', 'r'}, -- 13 - ll-Ssss-RR
{'^(%a%a%a?)%-(%a%a%a%a)%-(%d%d%d)$', 's', 'r'}, -- 14 - ll-Ssss-DDD (region is 3 digits)
{'^(%a%a%a?)%-(%a%a%a%a)$', 's'}, -- 15 - ll-Ssss
{'^(%a%a%a?)%-(%a%a)$', 'r'}, -- 16 - ll-RR
{'^(%a%a%a?)%-(%d%d%d)$', 'r'}, -- 17 - ll-DDD (region is 3 digits)
{'^(%a%a%a?)$'}, -- 18 - ll
{'^(%a%a%a?)%-x%-(%w%w?%w?%w?%w?%w?%w?%w?)$', 'p'}, -- 19 - ll-x-pppppppp (private is 1-8 alnum characters)
}
local t = {}; -- table of captures; serves as a translator between captured IETF tag parts and named variables
for i, v in ipairs (pattern) do -- spin through the pattern table looking for a match
local c1, c2, c3, c4; -- captures in the 'pattern' from the pattern table go here
c1, c2, c3, c4 = source:match (pattern[i][1]); -- one or more captures set if source matches pattern[i])
if c1 then -- c1 always set on match
code = c1; -- first capture is always code
t = {
[pattern[i][2] or 'x'] = c2, -- fill the table of captures with the rest of the captures
[pattern[i][3] or 'x'] = c3, -- take index names from pattern table and assign sequential captures
[pattern[i][4] or 'x'] = c4, -- index name may be nil in pattern[i] table so "or 'x'" spoofs a name for this index in this table
};
script = t.s or ''; -- translate table contents to named variables;
region = t.r or ''; -- absent table entries are nil so set named IETF parts to empty string for concatenation
variant= t.v or '';
private = t.p or '';
break; -- and done
end
end
if not code then
return nil, nil, nil, nil, nil, substitute (cfg.get_ietf_parts_t.unrecog_tag, {source}); -- don't know what we got but it is malformed
end
code = code:lower(); -- ensure that we use and return lower case version of this
if not (override_table[code] or lang_table[code] or synonym_table[code] or lang_dep_table[code]) then
return nil, nil, nil, nil, nil, substitute (cfg.get_ietf_parts_t.unrecog_code, {code}); -- invalid language code, don't know about the others (don't care?)
end
if synonym_table[code] then -- if 639-2/639-2T code has a 639-1 synonym
table.insert (maint_cats, substitute (cfg.get_ietf_parts_t.maint_promo_cat, {code}));
table.insert (maint_msgs, substitute (cfg.get_ietf_parts_t.maint_promo_msg, {code, synonym_table[code]}));
code = synonym_table[code]; -- use the synonym
end
if is_set (script) then
if is_set (args_script) then
return code, nil, nil, nil, nil, cfg.get_ietf_parts_t.redundant_scr; -- both code with script and |script= not allowed
end
else
script = args_script or ''; -- use args.script if provided
end
if is_set (script) then
script = script:lower(); -- ensure that we use and return lower case version of this
if not script_table[script] then
return code, nil, nil, nil, nil, substitute (cfg.get_ietf_parts_t.unrecog_scr_code, {script, code}); -- language code OK, invalid script, don't know about the others (don't care?)
end
end
if suppressed_table[script] then -- ensure that code-script does not use a suppressed script
if in_array (code, suppressed_table[script]) then
return code, nil, nil, nil, nil, substitute (cfg.get_ietf_parts_t.script_code, {script, code}); -- language code OK, script is suppressed for this code
end
end
if is_set (region) then
if is_set (args_region) then
return code, nil, nil, nil, nil, cfg.get_ietf_parts_t.redundant_reg; -- both code with region and |region= not allowed
end
else
region = args_region or ''; -- use args.region if provided
end
if is_set (region) then
region = region:lower(); -- ensure that we use and return lower case version of this
if not region_table[region] then
return code, script, nil, nil, nil, substitute (cfg.get_ietf_parts_t.unrecog_reg_code, {region, code});
end
end
if is_set (variant) then
if is_set (args_variant) then
return code, nil, nil, nil, nil, cfg.get_ietf_parts_t.redundant_var; -- both code with variant and |variant= not allowed
end
else
variant = args_variant or ''; -- use args.variant if provided
end
if is_set (variant) then
variant = variant:lower(); -- ensure that we use and return lower case version of this
if not variant_table[variant] then -- make sure variant is valid
return code, script, region, nil, nil, substitute (cfg.get_ietf_parts_t.unrecog_var, {variant});
end -- does this duplicate/replace tests in lang() and lang_xx()?
if is_set (script) then -- if script set it must be part of the 'prefix'
if not in_array (table.concat ({code, '-', script}), variant_table[variant]['prefixes']) then
return code, script, region, nil, nil, substitute (cfg.get_ietf_parts_t.unrecog_var_code_scr, {variant, code, script});
end
elseif is_set (region) then -- if region set, there are some prefixes that require lang code and region (en-CA-newfound)
if not in_array (code, variant_table[variant]['prefixes']) then -- first see if lang code is all that's required (en-oxendict though en-GB-oxendict is preferred)
if not in_array (table.concat ({code, '-', region}), variant_table[variant]['prefixes']) then -- now try for lang code and region (en-CA-newfound)
return code, script, region, nil, nil, substitute (cfg.get_ietf_parts_t.unrecog_var_code_reg, {variant, code, region});
end
end
else -- cheap way to determine if there are prefixes; fonipa and others don't have prefixes; # operator always returns 0
if variant_table[variant]['prefixes'][1] and not in_array (code, variant_table[variant]['prefixes']) then
return code, script, region, nil, nil, substitute (cfg.get_ietf_parts_t.unrecog_var_code, {variant, code});
end
end
end
if is_set (private) then
private = private:lower(); -- ensure that we use and return lower case version of this
if not override_table[table.concat ({code, '-x-', private})] then -- make sure private tag is valid; note that index
return code, script, region, nil, nil, substitute (cfg.get_ietf_parts_t.unrecog_pri, {private});
end
end
return code, script, region, variant, private, nil; -- return the good bits; make sure that msg is nil
end
--[=[-------------------------< M A K E _ W I K I L I N K >----------------------------------------------------
Makes a wikilink; when both link and display text is provided, returns a wikilink in the form [[L|D]]; if only
link is provided, returns a wikilink in the form [[L]]; if neither are provided or link is omitted, returns an
empty string.
]=]
local function make_wikilink (link, display)
if is_set (link) then
if is_set (display) then
return table.concat ({'[[', link, '|', display, ']]'});
else
return table.concat ({'[[', link, ']]'});
end
else
return '';
end
end
--[[--------------------------< D I V _ M A R K U P _ A D D >--------------------------------------------------
Adds <i> and </i> tags to list-item text or to implied <p>..</p> text. Mixed not supported.
]]
local function div_markup_add (text, style)
if text:find ('^\n[%*:;#]') then -- look for list markup; list markup must begin at start of text
if 'italic' == style then
return text:gsub ('(\n[%*:;#]+)([^\n]+)', '%1<i>%2</i>'); -- insert italic markup at each list item
else
return text;
end
end
if text:find ('\n+') then -- look for any number of \n characters in text
text = text:gsub ('([^\n])\n([^\n])', '%1 %2'); -- replace single newline characters with a space character which mimics MediaWiki
if 'italic' == style then
text = text:gsub('[^\n]+', '<p><i>%1</i></p>'); -- insert p and italic markup tags at each implied p (two or more consecutive '\n\n' sequences)
else
text = text:gsub ('[^\n]+', '<p>%1</p>'); -- insert p markup at each implied p
text = text:gsub ('\n', ''); -- strip newline characters
end
end
return text;
end
--[[--------------------------< T I T L E _ W R A P P E R _ M A K E >------------------------------------------
Makes a <span title="<title text>"><content_text></span> or <div title="<title text>"><content_text></div> where
<title text> is in the tool-tip in the wiki's local language and <content_text> is non-local-language text in
HTML markup. This because the lang= attribute applies to the content of its enclosing tag.
<tag> holds a string 'div' or 'span' used to choose the correct wrapping tag.
]]
local function title_wrapper_make (title_text, content_text, tag)
local wrapper_t = {};
table.insert (wrapper_t, table.concat ({'<', tag})); -- open opening wrapper tag
table.insert (wrapper_t, ' title=\"'); -- begin title attribute
table.insert (wrapper_t, title_text); -- add <title_text>
table.insert (wrapper_t, '\">'); -- end title attribute and close opening wrapper tag
table.insert (wrapper_t, content_text); -- add <content_text>
table.insert (wrapper_t, table.concat ({'</', tag, '>'})); -- add closing wrapper tag
return table.concat (wrapper_t); -- make a big string and done
end
--[[--------------------------< M A K E _ T E X T _ H T M L >--------------------------------------------------
Add the HTML markup to text according to the type of content that it is: <span> or <i> tags for inline content or
<div> tags for block content
The lang= attribute also applies to the content of the tag where it is placed so this is wrong because 'Spanish
language text' is English:
<i lang="es" title="Spanish language text">casa</i>
should be:
<span title="Spanish language text"><i lang="es">casa</i></span>
or for <div>...</div>:
<div title="Spanish language text"><div lang="es"><spanish-language-text></div></div>
]]
local function make_text_html (code, text, tag, rtl, style, size, language)
local html_t = {};
local style_added = '';
local wrapper_tag = tag; -- <tag> gets modified so save a copy for use when/if we create a wrapper span or div
if text:match ('^%*') then
table.insert (html_t, '*'); -- move proto language text prefix outside of italic markup if any; use numeric entity because plain splat confuses MediaWiki
text = text:gsub ('^%*', ''); -- remove the splat from the text
end
if 'span' == tag then -- default HTML tag for inline content
if 'italic' == style then -- but if italic
tag = 'i'; -- change to <i> tags
end
else -- must be div so go
text = div_markup_add (text, style); -- handle implied <p>, implied <p> with <i>, and list markup (*;:#) with <i>
end
table.insert (html_t, table.concat ({'<', tag})); -- open the <i>, <span>, or <div> HTML tag
code = code:gsub ('%-x%-.*', ''); -- strip private use subtag from code tag because meaningless outside of Wikipedia
table.insert (html_t, table.concat ({' lang="', code, '\"'})); -- add language attribute
if (rtl or unicode.is_rtl(text)) and ('ltr' == this_wiki_lang_dir) then -- text is right-to-left on a left-to-right wiki
table.insert (html_t, ' dir="rtl"'); -- add direction attribute for right-to-left languages
elseif not (rtl or unicode.is_rtl(text)) and ('rtl' == this_wiki_lang_dir) then -- text is left-to-right on a right-to-left wiki
table.insert (html_t, ' dir="ltr"'); -- add direction attribute for left-to-right languages
end
if 'normal' == style then -- when |italic=no
table.insert (html_t, ' style=\"font-style: normal;'); -- override external markup, if any
style_added = '\"'; -- remember that style attribute added and is not yet closed
end
if is_set (size) then -- when |size=<something>
if is_set (style_added) then
table.insert (html_t, table.concat ({' font-size: ', size, ';'})); -- add when style attribute already inserted
else
table.insert (html_t, table.concat ({' style=\"font-size: ', size, ';'})); -- create style attribute
style_added = '\"'; -- remember that style attribute added and is not yet closed
end
end
table.insert (html_t, table.concat ({style_added, '>'})); -- close the opening HTML tag
table.insert (html_t, text); -- insert the text
table.insert (html_t, table.concat ({'</', tag, '>'})); -- close the 'text' <i>, <span>, or <div> HTML tag
if is_set (language) then -- create a <title_text> string for the title= attribute in a wrapper span or div
local title_text;
if 'zxx' == code then -- special case for this tag 'no linguistic content'
title_text = substitute ('$1 $2', {language, cfg.make_text_html_t.zxx}); -- not a language so don't use 'language' in title text
elseif mw.ustring.find (language, 'languages', 1, true) then
title_text = substitute ('$1 $2', {language, cfg.make_text_html_t.collective}); -- for collective languages
else
title_text = substitute ('$1-$2', {language, cfg.make_text_html_t.individual}); -- for individual languages
end
return title_wrapper_make (title_text, table.concat (html_t), wrapper_tag);
else
return table.concat (html_t);
end
end
--[=[-------------------------< M A K E _ C A T E G O R Y >----------------------------------------------------
For individual language, <language>, returns:
[[Category:Articles containing <language>-language text]]
For English:
[[Category:Articles containing explicitly cited English-language text]]
For ISO 639-2 collective languages (and for 639-1 bh):
[[Category:Articles with text in <language> languages]]
]=]
local function make_category (code, language_name, nocat, name_get)
if ((0 ~= namespace) or nocat) and not name_get then -- only categorize in article space
return ''; -- return empty string for concatenation
end
if mw.ustring.find (language_name, 'languages', 1, true) then
return substitute ('[[$1 $2]]', {cfg.make_category_t.collective_cat, language_name});
end
if this_wiki_lang_tag == code then
return substitute ('[[$1 $2 $3-$4]]', { -- unique category name for the local language
cfg.make_category_t.cat_prefix,
cfg.make_category_t.explicit_cat,
language_name,
cfg.make_category_t.cat_postfix,
});
else
return substitute ('[[$1 $2-$3]]', { -- category for individual languages
cfg.make_category_t.cat_prefix,
language_name,
cfg.make_category_t.cat_postfix,
});
end
end
--[[--------------------------< M A K E _ T R A N S L I T >----------------------------------------------------
Return translit <i lang=xx-Latn>...</i> where xx is the language code; else return empty string.
The value |script= is not used in {{transliteration}} for this purpose; instead it uses |code. Because language scripts
are listed in the {{transliteration}} switches they are included in the data tables. The script parameter is introduced
at {{Language with name and transliteration}}. If |script= is set, this function uses it in preference to code.
To avoid confusion, in this module and the templates that use it, the transliteration script parameter is renamed
to be |translit-script= (in this function, tscript).
This function is used by both lang_xx() and xlit()
lang_xx() always provides code, language_name, and translit; may provide tscript; never provides style
xlit() always provides language_name, translit, and one of code or tscript, never both; always provides style
For {{transliteration}}, style only applies when a language code is provided.
]]
local function make_translit (code, language_name, translit, std, tscript, style, engvar)
local title_t = lang_data.translit_title_table; -- table of transliteration standards and the language codes and scripts that apply to those standards
local title_text = ''; -- tool tip text for title= attribute
std = std and std:lower(); -- lower case for table indexing
if not is_set (std) and not is_set (tscript) then -- when neither standard nor script specified
title_text = language_name; -- write a generic tool tip
if not mw.ustring.find (language_name, 'languages', 1, true) then -- collective language names (plural 'languages' is part of the name)
title_text = substitute ('$1-$2', {title_text, cfg.misc_text_t.language}); -- skip this text (individual and macro languages only)
end
title_text = substitute ('$1 $2', {title_text, mw.ustring.lower (cfg.engvar_t[engvar]['romanisz_lc'])}); -- finish the tool tip; use romanization when neither script nor standard supplied
elseif is_set (std) and is_set (tscript) then -- when both are specified
if title_t[std] then -- and if standard is legitimate
if title_t[std][tscript] then -- and if script for that standard is legitimate
if script_table[tscript] then
title_text = substitute ('$1$2 ($3 $4) $5', { -- add the appropriate text to the tool tip
title_text,
title_t[std][tscript:lower()],
script_table[tscript],
cfg.make_translit_t.script,
cfg.make_translit_t.transliteration,
});
else
title_text = title_text .. title_t[std]['default']; -- use the default if script not in std table; TODO: maint cat? error message because script not found for this standard?
end
else
title_text = title_text .. title_t[std]['default']; -- use the default if script not in std table; TODO: maint cat? error message because script not found for this standard?
end
else
return ''; -- invalid standard, setup for error message
end
elseif is_set (std) then -- translit-script not set, use language code
if not title_t[std] then return ''; end -- invalid standard, setup for error message
if title_t[std][code] then -- if language code is in the table (xlit may not provide a language code)
local fmt_str = '$1$2 ($3 $4) $5'; -- generic format string for tool tip
if language_name:match ('languages') then
fmt_str = '$1$2 ($3) $5'; -- format string for collective languages tool tip
end
title_text = substitute (fmt_str, { -- add the appropriate text to the tool tip
title_text,
title_t[std][code:lower()],
language_name,
cfg.misc_text_t.language,
cfg.make_translit_t.transliteration,
});
else -- code doesn't match
title_text = title_text .. title_t[std]['default']; -- so use the standard's default
end
else -- here if translit-script set but translit-std not set
if title_t['no_std'][tscript] then
title_text = title_text .. title_t['no_std'][tscript]; -- use translit-script if set
elseif title_t['no_std'][code] then
title_text = title_text .. title_t['no_std'][code]; -- use language code
else
if is_set (tscript) then
title_text = substitute ('$1$2-$3 $4', { -- write a script tool tip
title_text,
language_name,
cfg.make_translit_t.script,
cfg.make_translit_t.transliteration,
});
elseif is_set (code) then
if not mw.ustring.find (language_name, 'languages', 1, true) then -- collective language names (plural 'languages' is part of the name)
title_text = substitute ('$1-$2', { -- skip this text (individual and macro languages only)
title_text,
cfg.misc_text_t.language,
});
end
title_text = substitute ('$1 $2', { -- finish the tool tip
title_text,
cfg.make_translit_t.transliteration,
});
else
title_text = substitute ('$1 $2', { -- generic tool tip (can we ever get here?)
title_text,
cfg.make_translit_t.transliteration,
});
end
end
end
local tag
if is_set (code) then -- when a language code is provided (always with {{lang-??}} templates, not always with {{transliteration}})
code = code:match ('^(%a%a%a?)'); -- strip all subtags leaving only the language subtag
if not style then -- nil for the default italic style
tag = '<i lang="%s-Latn">%s</i>'
else
tag = '<span style="font-style: %s" lang="%s-Latn">%s</span>' -- non-standard style, construct a span tag for it
tag = string.format(tag, style, "%s", "%s")
end
tag = string.format(tag, code, "%s")
else
tag = '<span>%s</span>' -- when no language code: no lang= attribute, not italic ({{transliteration}} only)
end
tag = string.format(tag, translit) -- add the translit text
if '' == title_text then -- when there is no need for a tool-tip
return tag; -- done
else
title_text = cfg.engvar_sel_t.gb == engvar and title_text:gsub ('([Rr]omani)z', '%1s') or title_text; -- gb eng when engvar specifies gb eng; us eng else
return title_wrapper_make (title_text, tag, 'span'); -- wrap with a tool-tip span and done
end
end
--[[--------------------------< V A L I D A T E _ T E X T >----------------------------------------------------
This function checks the content of args.text and returns empty string if nothing is amiss else it returns an
error message. The tests are for empty or missing text and for improper or disallowed use of apostrophe markup.
Italic rendering is controlled by the |italic= template parameter so italic markup should never appear in args.text
either as ''itself'' or as '''''bold italic''''' unless |italic=unset or |italic=invert.
]]
local function validate_text (template, args)
if not is_set (args.text) then
return make_error_msg (cfg.validate_text_t.no_text, args, template);
end
if args.text:find ("%f[\']\'\'\'\'%f[^\']") or args.text:find ("\'\'\'\'\'[\']+") then -- because we're looking, look for 4 appostrophes or 6+ appostrophes
return make_error_msg (cfg.validate_text_t.malformed_markup, args, template);
end
local style = args.italic;
if (cfg.keywords_t.unset ~= style) and (cfg.keywords_t.invert ~=style) then
if args.text:find ("%f[\']\'\'%f[^\']") or args.text:find ("%f[\']\'\'\'\'\'%f[^\']") then -- italic but not bold, or bold italic
return make_error_msg (cfg.validate_text_t.italic_markup, args, template);
end
end
end
--[[--------------------------< R E N D E R _ M A I N T >------------------------------------------------------
Render mainenance messages and categories.
]]
local function render_maint (nocat)
local maint = {};
if 0 < #maint_msgs then -- when there are maintenance messages
table.insert (maint, table.concat ({'<span class="lang-comment" style="font-style: normal; display: none; color: #33aa33; margin-left: 0.3em;">'})); -- opening <span> tag
for _, msg in ipairs (maint_msgs) do
table.insert (maint, table.concat ({msg, ' '})); -- add message strings
end
table.insert (maint, '</span>'); -- close the span
end
if (0 < #maint_cats) and (0 == namespace) and not nocat then -- when there are maintenance categories; article namespace only
for _, cat in ipairs (maint_cats) do
table.insert (maint, table.concat ({'[[Category:', cat, ']]'})); -- format and add the categories
end
end
return table.concat (maint);
end
--[[--------------------------< P R O T O _ P R E F I X >------------------------------------------------------
For proto languages, text is prefixed with a splat. We do that here as a flag for make_text_html() so that a splat
will be rendered outside of italic markup (if used). If the first character in text here is already a splat, we
do nothing.
proto_param is boolean or nil; true adds splat prefix regardless of language name; false removes and inhibits
regardless of language name; nil does nothing; presumes that the value in text is correct but removes extra splac.
]]
local function proto_prefix (text, language_name, proto_param)
if false == proto_param then -- when forced by |proto=no
return text:gsub ('^%**', ''); -- return text without splat prefix regardless of language name or existing splat prefix in text
elseif (language_name:find ('^Proto%-') or (true == proto_param)) then -- language is a proto or forced by |proto=yes
return text:gsub ('^%**', '*'); -- prefix proto-language text with a splat; also removes duplicate prefixing splats
end
return text:gsub ('^%*+', '*'); -- return text unmolested except multiple splats reduced to one splat
end
--[[--------------------------< H A S _ P O E M _ T A G >------------------------------------------------------
Looks for a poem strip marker in text; returns true when found; false else.
Auto-italic detection disabled when text has poem stripmarker because it is not possible for this code to know
the content that will replace the stripmarker.
]]
local function has_poem_tag (text)
return text:find ('\127[^\127]*UNIQ%-%-poem%-[%a%d]+%-QINU[^\127]*\127') and true or false;
end
--[[--------------------------< H T M L _ T A G _ S E L E C T >------------------------------------------------
Inspects content of and selectively trims text. Returns text and the name of an appropriate HTML tag for text.
If text contains:
\n\n text has implied <p>..</p> tags - trim leading and trailing whitespace and return
If text begins with list markup:
\n* unordered
\n; definition
\n: definition
\n# ordered
trim all leading whitespace except \n and trim all trailing whitespace
If text contains <poem>...</poem> stripmarker, return text unmodified and choose <div>..</div> tags because
the stripmarker is replaced with text wrapped in <div>..</div> tags.
If the text contains any actual <div>...</div> tags, then it's again returned unmodified and <div>...</div>
tags are used to wrap it, to prevent div/span inversion.
]]
local function html_tag_select (text)
local tag;
if has_poem_tag (text) then -- contains poem stripmarker (we can't know the content of that)
tag = 'div'; -- poem replacement is in div tags so lang must use div tags
elseif text:find ('<div') then -- reductive; if the text contains a div tag, we must use div tags
tag = 'div';
elseif mw.text.trim (text):find ('\n\n+') then -- contains implied p tags
text = mw.text.trim (text); -- trim leading and trailing whitespace characters
tag = 'div'; -- must be div because span may not contain p tags (added later by MediaWiki); poem replacement is in div tags
elseif text:find ('\n[%*:;%#]') then -- if text has list markup
text = text:gsub ('^[\t\r\f ]*', ''):gsub ('%s*$', ''); -- trim all whitespace except leading newline character '\n'
tag = 'div'; -- must be div because span may not contain ul, dd, dl, ol tags (added later by MediaWiki)
else
text = mw.text.trim (text); -- plain text
tag = 'span'; -- so span is fine
end
return text, tag;
end
--[[--------------------------< V A L I D A T E _ P R O T O >--------------------------------------------------
Validates value assigned to |proto=; permitted values are yes and no; yes returns as true, no returns as false,
empty string (or parameter omitted) returns as nil; any other value returns nil with <proto_param> as second
return value for use in error message.
]]
local function validate_proto (proto_param)
if cfg.keywords_t.affirmative == proto_param then
return true;
elseif cfg.keywords_t.negative == proto_param then
return false;
elseif is_set (proto_param) then
return nil, proto_param; -- |proto= something other than 'yes' or 'no'
else
return nil; -- missing or empty
end
end
--[[--------------------------< L A N G U A G E _ N A M E _ G E T >--------------------------------------------
Common function to return language name from the data set according to IETF tag.
Returns language name if found in data tables; nil else.
]]
local function language_name_get (ietf, code, cat)
ietf = ietf:lower(); -- ietf:lower() because format_ietf_tag() returns mixed case
local name; -- remains nil if not found
if override_table[ietf] then -- look for whole IETF tag in override table
name = override_table[ietf];
elseif override_table[code] then -- not there so try basic language tag
name = override_table[code];
elseif lang_table[code] then -- shift to IANA active tag/name table
name = lang_table[code];
elseif lang_dep_table[code] then -- try the IANA deprecated tag/name table
name = lang_dep_table[code];
end
if lang_dep_table[code] and cat then -- because deprecated code may have been overridden to en.wiki preferred name
table.insert (maint_cats, substitute (cfg.language_name_get_t.deprecated_cat, {code}));
table.insert (maint_msgs, substitute (cfg.language_name_get_t.deprecated_msg, {code}));
end
return name; -- name from data tables or nil
end
--[[--------------------------< T E X T _ S C R I P T _ M A T C H _ T E S T >----------------------------------
IETF script subtag should match the script of the <text>. This module does not attempt to know all scripts and
what they look like. It does know what Latn script looks like so when <text> is written using other than the Latn
script, the IETF script subtag, if present, should not be Latn.
Conversely, when <text> is written using the Latn script, the IETF script subtag, if present, should be Latn.
For the purposes of this test, Latf (Fraktur) and Latg (Gaelic) are considered to be equivalent to Latn because
unicode treats these two scripts as font-specific variants of Latn.
Returns an error message when mismatch detected; nil else.
]]
local function text_script_match_test (script, is_latn_text, pos, char)
local scripts_t = {['latf'] = true, ['latg'] = true, ['latn'] = true}; -- unicode 'latn' scripts; 'latf' and 'latg' are font variants so there are no Fraktur or Gaelic codepoints
if is_set (script) then -- don't bother with the rest of this if <script> is nil or empty string
script = script:lower(); -- lower case to index into <scripts_t>
if is_latn_text then -- when text is wholly Latn script
if not scripts_t[script] then -- but a non-Latn script is specified
return cfg.text_script_match_test_t.latn_txt_mismatch; -- emit an error message
end
else -- when text is not wholly Latn script
if scripts_t[script] then -- but a Latn script is specified
return substitute (cfg.text_script_match_test_t.latn_scr_mismatch, {pos, char}); -- emit an error message with position of first offending character
end
end
end
end
--[[--------------------------< B I N A R Y _ S E A R C H >---------------------------------------------------
conducts a binary search of <ranges_t> for a sub-range that holds <target>.
returns boolean true if a sub-range holding <target> is found; boolean false else.
]]
local function binary_search (target, ranges_t)
local idx_bot = 1; -- initialize to index of first key
local idx_top = sizeof_ranges_t; -- initialize to index of last key (number of keys)
if (target < ranges_t[idx_bot][1]) or (target > ranges_t[idx_top][2]) then -- invalid; target out of range
return; -- abandon
end
local idx_mid; -- calculated index of range midway between top index and bottom index
local flag = false; -- flag to tell us when we've evaluated last (highest) range in <ranges_t>
while 1 do
idx_mid = math.ceil ((idx_bot + idx_top) / 2); -- get the mid-point in the <ranges_t> sequence
if (target >= ranges_t[idx_mid][1]) and (target <= ranges_t[idx_mid][2]) then -- indexed range low value <= target <= indexed range high value
return true; -- we found the range that holds the <target> character; return true
elseif (target > ranges_t[idx_mid][2]) then -- is <target> > indexed range high value?
idx_bot = idx_mid; -- adjust <idx_bot> up
else -- here when <target> less than indexed range low value
idx_top = idx_mid - 1; -- adjust <idx_top> down
end
if flag then
break; -- here when we just evaluated the last range and <target> not found
end
if not flag and (idx_bot == idx_top) then -- set true just before we evaluate the last (highest) range in <ranges_t>
flag = true;
end
end
end
--[[--------------------------< I S _ L A T I N >--------------------------------------------------------------
compare <text> as codepoints to lists of known codepoints accepted as Latn script
returns boolean true and modified <text> when <text> is wrapped in accept-as-written markup
returns boolean true and <text> when codepoint is known
returns boolean false, <text>, non-Latn codepoint position in <text> (left to right), and the codepoint character
when codepoint is not known
TODO: when text has accept-as-written markup, return a non-boolean value to indicate that <text> is not wholly
latn script? Use that return value to create non-Latn HTML lang= attribute because <text> isn't really
latn so lang=und (undetermined)? or instead, omit the -Latn subtag? (without -Latn need to force |italic=yes)
]]
local function is_latin (text, tag)
local count;
text, count = text:gsub ('^%(%((.+)%)%)$', '%1'); -- remove accept-as-written markup if present
if 0 ~= count then
return true, text; -- markup present so assume that <text> is Latn-script
end
local pos = 0; -- position counter for error messaging
for codepoint in mw.ustring.gcodepoint (text) do -- fetch each code point
pos = pos + 1; -- bump the position counter
if not is_latn_data.singles_t[codepoint] and -- codepoint not found in the singles list?
not binary_search (codepoint, is_latn_data.ranges_t) and -- codepoint not a member of a listed range?
not (tag and is_latn_data.specials_t[codepoint] and is_latn_data.specials_t[codepoint][tag]) then -- not a language-specific codepoint?
return false, text, pos, mw.ustring.char (codepoint); -- codepoint not known; return false with codepoint position and character representation
end
end
return true, text; -- is known; return <text>
end
--[[--------------------------< _ L A N G >--------------------------------------------------------------------
Entry point for {{lang}}.
There should be no reason to set parameters in the {{lang}} {{#invoke:}}
<includeonly>{{#invoke:lang|lang}}</includeonly>
Parameters are received from the template's frame (parent frame).
]]
local function _lang (args)
local out = {};
local language_name; -- used to make category names
local category_name; -- same as language_name except that it retains any parenthetical disambiguators (if any) from the data set
local subtags = {}; -- IETF subtags script, region, variant, and private
local code; -- the language code
local msg; -- for error messages
local tag = 'span'; -- initial value for make_text_html()
local template = args.template or cfg.templates_t.lang;
maint_cats = {}; -- initialize because when this module required into another module, these only declared once so only initialzed once
maint_msgs = {};
validate_cat_args (args); -- determine if categorization should be suppressed
if args[1] and args.code then
return make_error_msg (substitute (cfg.lang_t.conflict_n_param, {'1', cfg.lang_t.conflict_n_param_types.code}), args, template);
else
args.code = args[1] or args.code; -- prefer args.code
end
if args[2] and args.text then
return make_error_msg (substitute (cfg.lang_t.conflict_n_param, {'2', cfg.lang_t.conflict_n_param_types.text}), args, template);
else
args.text = args[2] or args.text; -- prefer args.text
end
msg = validate_text (template, args); -- ensure that |text= is set
if is_set (msg) then -- msg is an already-formatted error message
return msg;
end
args.text, tag = html_tag_select (args.text); -- inspects text; returns appropriate HTML tag with text trimmed accordingly
args.rtl = args.rtl == cfg.keywords_t.affirmative; -- convert to boolean: 'yes' -> true, other values -> false
args.proto, msg = validate_proto (args.proto); -- return boolean, or nil, or nil and error message flag
if msg then
return make_error_msg (substitute (cfg.lang_t.invalid_proto, {msg}), args, template);
end
code, subtags.script, subtags.region, subtags.variant, subtags.private, msg = get_ietf_parts (args.code); -- |script=, |region=, |variant= not supported because they should be part of args.code ({{{1}}} in {{lang}})
if msg then
return make_error_msg (msg, args, template);
end
local is_latn_text, pos, char;
is_latn_text, args.text, pos, char= is_latin (args.text, code); -- make a boolean
msg = text_script_match_test (subtags.script, is_latn_text, pos, char)
if msg then -- if an error detected then there is an error message
return make_error_msg (msg, args, template);
end
args.italic, msg = validate_italic (args);
if msg then
return make_error_msg (msg, args, template);
end
if nil == args.italic then -- nil when |italic= absent or not set or |italic=default; args.italic controls
if ('latn' == subtags.script) or -- script is latn
(this_wiki_lang_tag ~= code and not is_set (subtags.script) and not has_poem_tag (args.text) and is_latn_text) then -- text not this wiki's language, no script specified and not in poem markup but is wholly latn script (auto-italics)
args.italic = 'italic'; -- DEFAULT for {{lang}} templates is upright; but if latn script set for font-style:italic
else
args.italic = 'inherit'; -- italic not set; script not latn; inherit current style
end
end
if is_set (subtags.script) then -- if script set, override rtl setting
if in_array (subtags.script, lang_data.rtl_scripts) then
args.rtl = true; -- script is an rtl script
else
args.rtl = false; -- script is not an rtl script
end
end
args.code = format_ietf_tag (code, subtags.script, subtags.region, subtags.variant, subtags.private); -- format to recommended subtag styles
language_name = language_name_get (args.code, code, true); -- get language name; try IETF tag first, then code w/o variant then code w/ variant
if cfg.keywords_t.invert == args.italic and 'span' == tag then -- invert only supported for in-line content
args.text = invert_italics (args.text)
end
args.text = proto_prefix (args.text, language_name, args.proto); -- prefix proto-language text with a splat
table.insert (out, make_text_html (args.code, args.text, tag, args.rtl, args.italic, args.size, language_name));
table.insert (out, make_category (code, language_name, args.nocat));
table.insert (out, render_maint (args.nocat)); -- maintenance messages and categories
return table.concat (out); -- put it all together and done
end
--[[--------------------------< L A N G >----------------------------------------------------------------------
Entry point for {{lang}}.
There should be no reason to set parameters in the {{lang}} {{#invoke:}}
<includeonly>{{#invoke:lang|lang}}</includeonly>
Parameters are received from the template's frame (parent frame).
]]
local function lang (frame)
local args_t = getArgs (frame, { -- this code so that we can detect and handle wiki list markup in text
valueFunc = function (key, value)
if 2 == key or 'text' == key then -- the 'text' parameter; do not trim wite space
return value; -- return untrimmed 'text'
elseif value then -- all other values: if the value is not nil
value = mw.text.trim (value); -- trim whitespace
if '' ~= value then -- empty string when value was only whitespace
return value;
end
end
return nil; -- value was empty or contained only whitespace
end -- end of valueFunc
});
args_t.fn = nil; -- unset because not supported but this function might have been called by {{lang|fn=lang|...}}
local msg = parameter_validate (args_t, cfg.templates_t.lang); -- verify that all supplied parameters are supported by {{lang-??}}
if msg then
return make_error_msg (msg, args_t, cfg.templates_t.lang); -- when template has unsupported params, abandon with error message
end
return _lang (args_t);
end
--[[--------------------------< T R A N S L A T I O N _ M A K E >----------------------------------------------
Stand-alone function to create literal translation of main text.
Also used by {{lang-x2}}.
]]
local function translation_make (args_t)
local translation_t = {', '}; -- initialize output
if 'none' ~= args_t.label then -- if we want a label
table.insert (translation_t, '<small>'); -- open the <small> HTML tag
if cfg.keywords_t.negative == args_t.link then
table.insert (translation_t, substitute ('<abbr title="$1">$2</abbr>', {cfg.translation_make_t.lit_xlation, cfg.translation_make_t.lit_abbr})); -- unlinked form
else
table.insert (translation_t, make_wikilink (cfg.translation_make_t.lit_xlation, cfg.translation_make_t.lit_abbr)); -- linked form
end
table.insert (translation_t, " </small>"); -- close the <small> HTML tag
end
table.insert (translation_t, table.concat ({ -- user styling spans match spand from {{gloss}}
'<span class="gloss-quot">\'</span>', -- user styling span for quote marks; use HTML entities to avoid wiki markup confusion
'<span class="gloss-text">', -- open user styling span for the translation
args_t.translation, -- the translation
'</span>', -- close user styling span for the translation
'<span class="gloss-quot">\'</span>' -- user styling span for quote marks
}));
return table.concat (translation_t); -- make a big string and done
end
--[[--------------------------< _ L A N G _ X X >--------------------------------------------------------------
For the {{lang-??}} templates, the only parameter required to be set in the template is the language code. All
other parameters can, usually should, be written in the template call. For {{lang-??}} templates for languages
that can have multiple writing systems, it may be appropriate to set |script= as well.
For each {{lang-??}} template choose the appropriate entry-point function so that this function knows the default
styling that should be applied to text.
For normal, upright style:
<includeonly>{{#invoke:lang|lang_xx_inherit|code=xx}}</includeonly>
For italic style:
<includeonly>{{#invoke:lang|lang_xx_italic|code=xx}}</includeonly>
All other parameters should be received from the template's frame (parent frame)
Supported parameters are:
|code = (required) the IANA language code
|script = IANA script code; especially for use with languages that use multiple writing systems
|region = IANA region code
|variant = IANA variant code
|text = (required) the displayed text in language specified by code
|link = boolean false ('no') does not link code-spcified language name to associated language article
|rtl = boolean true ('yes') identifies the language specified by code as a right-to-left language
|nocat = boolean true ('yes') inhibits normal categorization; error categories are not affected
|cat = boolian false ('no') opposite form of |nocat=
|italic = boolean true ('yes') renders displayed text in italic font; boolean false ('no') renders displayed text in normal font; not set renders according to initial_style_state
|lit = text that is a literal translation of text
|label = 'none' to suppress all labeling (language name, 'translit.', 'lit.')
any other text replaces language-name label - automatic wikilinking disabled
for those {{lang-??}} templates that support transliteration (those templates where |text= is not entirely latn script):
|translit = text that is a transliteration of text
|translit-std = the standard that applies to the transliteration
|translit-script = ISO 15924 script name; falls back to code
For {{lang-??}}, the positional parameters are:
{{{1}}} text
{{{2}}} transliterated text
{{{3}}} literal translation text
no other positional parameters are allowed
]]
local function _lang_xx (args, base_template) -- base_template will be either of 'langx' or 'lang-xx'
local out = {};
local language_name; -- used to make display text, article links
local category_name; -- same as language_name except that it retains any parenthetical disambiguators (if any) from the data set
local subtags = {}; -- IETF subtags script, region, and variant
local code; -- the language code
local translit_script_name; -- name associated with IANA (ISO 15924) script code
local translit;
local msg; -- for error messages
local tag = 'span'; -- initial value for make_text_html()
local template = args.template or base_template;
maint_cats = {}; -- initialize because when this module required into another module, these only declared once so only initialzed once
maint_msgs = {};
local text_idx = (cfg.templates_t.langx == base_template) and 2 or 1; -- for {{langx}} 'text' positional parameter is '2'
local translit_idx = (cfg.templates_t.langx == base_template) and 3 or 2;
local xlate_idx = (cfg.templates_t.langx == base_template) and 4 or 3;
if args[text_idx] and args.text then
return make_error_msg (substitute (cfg.lang_t.conflict_n_param, {text_idx, cfg.lang_t.conflict_n_param_types.text}), args, template);
else
args.text = args[text_idx] or args.text; -- prefer positional 'text' parameter
end
msg = validate_text (template, args); -- ensure that |text= is set, does not contain italic markup and is protected from improper bolding
if is_set (msg) then
return msg;
end
args.text, tag = html_tag_select (args.text); -- inspects text; returns appropriate HTML tag with text trimmed accordingly
if args[translit_idx] and args.translit then
return make_error_msg (substitute (cfg.lang_t.conflict_n_param, {translit_idx, cfg.lang_t.conflict_n_param_types.translit}), args, template);
else
args.translit = args[translit_idx] or args.translit -- prefer positional 'translit' parameter
end
args.engvar = cfg.engvar_sel_t[args.engvar] or cfg.default_engvar; -- |engvar= when valid; cfg.default_engvar else
if args[xlate_idx] and (args.translation or args.lit) then
return make_error_msg (substitute (cfg.lang_xx_t.conflict_n_lit, {xlate_idx}), args, template);
elseif args.translation and args.lit then
return make_error_msg (cfg.lang_xx_t.conflict_lit, args, template);
else
args.translation = args[xlate_idx] or args.translation or args.lit; -- prefer positional 'translation' parameter
end
if args.links and args.link then
return make_error_msg (cfg.lang_xx_t.conflict_link, args, template);
else
args.link = args.link or args.links; -- prefer args.link
end
validate_cat_args (args); -- determine if categorization should be suppressed
args.rtl = args.rtl == cfg.keywords_t.affirmative; -- convert to boolean: 'yes' -> true, other values -> false
code, subtags.script, subtags.region, subtags.variant, subtags.private, msg = get_ietf_parts (args.code, args.script, args.region, args.variant); -- private omitted because private
if msg then -- if an error detected then there is an error message
return make_error_msg (msg, args, template);
end
if args.translit then
local latn, pos, char;
latn, args.translit, pos, char = is_latin (args.translit, (('' ~= subtags.private) and (code .. '-x-' .. subtags.private)) or code);
if not latn then
return make_error_msg (substitute (cfg.lang_xx_t.translit_nonlatn, {pos, char}), args, template);
end
end
local is_latn_text, text, pos, char = is_latin (args.text, code); -- make a boolean
args.text = text; -- may have been modified (accept-as-written markup removed)
msg = text_script_match_test (subtags.script, is_latn_text, pos, char)
if msg then -- if an error detected then there is an error message
return make_error_msg (msg, args, template);
end
args.italic, msg = validate_italic (args);
if msg then
return make_error_msg (msg, args, template);
end
if cfg.templates_t.langx == base_template then -- auto-italics for {{langx}} templates; adapted from {{lang}} (no support for poem tag)
if nil == args.italic then -- nil when |italic= absent or not set or |italic=default; args.italic controls
if ('latn' == subtags.script) or -- script is latn
(this_wiki_lang_tag ~= code and not is_set (subtags.script) and is_latn_text) then -- text is not this wiki's language, no script specified and is wholly latn script (auto-italics)
args.italic = 'italic'; -- set font-style:italic
else
args.italic = 'inherit'; -- italic not set; script not latn; inherit current style
end
end
else -- {{lang-xx}} does not do auto italics; retained for those wikis that don't support {{langx}}
if nil == args.italic then -- args.italic controls
if is_set (subtags.script) then
if 'latn' == subtags.script then
args.italic = 'italic'; -- |script=Latn; set for font-style:italic
else
args.italic = initial_style_state; -- italic not set; script is not latn; set for font-style:<initial_style_state>
end
else
args.italic = initial_style_state; -- here when |italic= and |script= not set; set for font-style:<initial_style_state>
end
end
end
if is_set (subtags.script) then -- if script set override rtl setting
if in_array (subtags.script, lang_data.rtl_scripts) then
args.rtl = true; -- script is an rtl script
else
args.rtl = false; -- script is not an rtl script
end
end
args.proto, msg = validate_proto (args.proto); -- return boolean, or nil, or nil and error message flag
if msg then
return make_error_msg (substitute (cfg.lang_t.invalid_proto, {args.proto}), args, template);
end
args.code = format_ietf_tag (code, subtags.script, subtags.region, subtags.variant, subtags.private); -- format to recommended subtag styles
language_name = language_name_get (args.code, code, true); -- get language name; try IETF tag first, then code w/o variant then code w/ variant
category_name = language_name; -- category names retain IANA parenthetical diambiguators (if any)
language_name = language_name:gsub ('%s+%b()', ''); -- remove IANA parenthetical disambiguators or qualifiers from names that have them
if args.label then
if 'none' ~= args.label then
table.insert (out, table.concat ({args.label, ': '})); -- custom label
end
else
if cfg.keywords_t.negative == args.link then
table.insert (out, language_name); -- language name without wikilink
else
if mw.ustring.find (language_name, 'languages', 1, true) then
table.insert (out, make_wikilink (language_name)); -- collective language name uses simple wikilink
elseif lang_data.article_name[args.code:lower()] then -- is IETF tag in article name over ride?
table.insert (out, make_wikilink (lang_data.article_name[args.code:lower()], language_name)); -- language name with wikilink from override data
elseif lang_data.article_name[code] then -- is language tag in article override
table.insert (out, make_wikilink (lang_data.article_name[code], language_name)); -- language name with wikilink from override data
else
table.insert (out, make_wikilink (substitute ('$1 $2', {language_name, cfg.misc_text_t.language}), language_name)); -- language name with wikilink
end
end
table.insert (out, ': '); -- separator
end
if cfg.keywords_t.invert == args.italic then
args.text = invert_italics (args.text)
end
args.text = proto_prefix (args.text, language_name, args.proto); -- prefix proto-language text with a splat
table.insert (out, make_text_html (args.code, args.text, tag, args.rtl, args.italic, args.size, ('none' == args.label) and language_name or nil))
if is_set (args.translit) and not is_latn_text then -- transliteration; not supported when args.text is wholly latn text (this is an imperfect test)
table.insert (out, ', '); -- comma to separate text from translit
if 'none' ~= args.label then
table.insert (out, '<small>');
if script_table[args['translit-script']] then -- when |translit-script= is set, try to use the script's name
translit_script_name = script_table[args['translit-script']];
else
translit_script_name = language_name; -- fall back on language name
end
local translit_title_obj = mw.title.makeTitle (0, substitute ('$1 $2',{cfg.lang_xx_t.romanization, translit_script_name})); -- make a title object; no engvar, article titles use US spelling
if translit_title_obj.exists and (cfg.keywords_t.negative ~= args.link) then
table.insert (out, make_wikilink (substitute ('$1 $2', {cfg.lang_xx_t.romanization, translit_script_name or language_name}),
substitute ('$1', {cfg.engvar_t[args.engvar]['romanisz_pt']})) .. ':'); -- make a wikilink if there is an article to link to; engvar the display text
else
table.insert (out, substitute ('$1:', {cfg.engvar_t[args.engvar]['romanisz_pt']})); -- else plain text per engvar
end
table.insert (out, ' </small>'); -- close the small tag
end
translit = make_translit (args.code, language_name, args.translit, args['translit-std'], args['translit-script'], nil, args.engvar)
if is_set (translit) then
table.insert (out, translit);
else
return make_error_msg (substitute ('$1: $2', {cfg.lang_xx_t.invalid_xlit_std, args['translit-std'] or '[missing]'}), args, template);
end
elseif is_set (args.translit) and is_latn_text then -- when creating a transliteration of Latn script <text>
return make_error_msg (cfg.lang_xx_t.xlit_of_latn, args, template); -- emit error message and abandon
end
if is_set (args.translation) then -- translation (not supported in {{lang}})
table.insert (out, translation_make (args));
end
table.insert (out, make_category (code, category_name, args.nocat));
table.insert (out, render_maint(args.nocat)); -- maintenance messages and categories
return table.concat (out); -- put it all together and done
end
--[[--------------------------< L A N G _ X X _ A R G S _ G E T >----------------------------------------------
Common function to get args table from {{lang-??}} templates.
Returns table of args.
Text positional parameters are not trimmed here but are selectively trimmed at html_tag_select().
]]
local function lang_xx_args_get (frame, base_template)
local args_t = getArgs(frame,
{
parentFirst= true, -- parameters in the template override parameters set in the {{#invoke:}}
valueFunc = function (key, value)
if ((cfg.templates_t.langx == base_template) and 2 or 1) == key then -- the 'text' positional parameter; 1 for {{lang-??}}, 2 for {{langx}}; do not trim wite space
return value; -- return untrimmed 'text' positional parameter
elseif value then -- all other values: if the value is not nil
value = mw.text.trim (value); -- trim whitespace
if '' ~= value then -- empty string when value was only whitespace
return value;
end
end
return nil; -- value was empty or contained only whitespace
end -- end of valueFunc
});
return args_t;
end
--[[--------------------------< L A N G _ X X _ I T A L I C >--------------------------------------------------
Entry point for those {{lang-??}} templates that call lang_xx_italic(). Sets the initial style state to italic.
]]
local function lang_xx_italic (frame)
local args = lang_xx_args_get (frame, cfg.templates_t.langxx);
args.fn = nil; -- unset because not supported but this function might have been called by {{lang|fn=lang_xx_italic|...}}
local msg = parameter_validate (args, cfg.templates_t.langxx); -- verify that all supplied parameters are supported by {{lang-??}}
if msg then
return make_error_msg (msg, args, cfg.templates_t.langxx); -- when template has unsupported params, abandon with error message
end
initial_style_state = 'italic';
return _lang_xx (args, cfg.templates_t.langxx) .. '[[Category:Pages using Lang-xx templates]]'; -- temporary category
end
--[[--------------------------< _ L A N G _ X X _ I T A L I C >------------------------------------------------
Entry point from another module. Sets the initial style state to italic.
]]
local function _lang_xx_italic (args)
initial_style_state = 'italic';
return _lang_xx (args, cfg.templates_t.langxx);
end
--[[--------------------------< L A N G _ X X _ I N H E R I T >------------------------------------------------
Entry point for those {{lang-??}} templates that call lang_xx_inherit(). Sets the initial style state to inherit.
]]
local function lang_xx_inherit (frame)
local args = lang_xx_args_get (frame, cfg.templates_t.langxx);
args.fn = nil; -- unset because not supported but this function might have been called by {{lang|fn=lang_xx_inherit|...}}
local msg = parameter_validate (args, cfg.templates_t.langxx); -- verify that all supplied parameters are supported by {{lang-??}}
if msg then
return make_error_msg (msg, args, cfg.templates_t.langxx); -- when template has unsupported params, abandon with error message
end
initial_style_state = 'inherit';
return _lang_xx (args, cfg.templates_t.langxx) .. '[[Category:Pages using Lang-xx templates]]'; -- temporary category
end
--[[--------------------------< _ L A N G _ X X _ I N H E R I T >----------------------------------------------
Entry point from another module. Sets the initial style state to inherit.
]]
local function _lang_xx_inherit (args)
initial_style_state = 'inherit';
return _lang_xx (args, cfg.templates_t.langxx);
end
--[[--------------------------< _ L A N G X >------------------------------------------------------------------
Entry point from another module.
]]
local function _langx (args_t)
local langx_data = mw.loadData ('Module:Lang/langx'); -- get necessary data
local rtl_t = langx_data.rtl_t; -- get list of language tags for languages that are rendered right-to-left
local link_t = langx_data.link_t; -- get list of language tags for {{lang-??}} templates that set |link=<something>
local size_t = langx_data.size_t; -- get list of language tags for {{lang-??}} templates that set |size=<something>
local msg = parameter_validate (args_t, cfg.templates_t.langx);
if msg then
return make_error_msg (msg, args_t, cfg.templates_t.langx);
end
args_t.code = args_t[1] or args_t.code; -- get the language tag; must be {{{1}}} or |code=
if not args_t.code then
return make_error_msg (cfg.get_ietf_parts_t.missing_lang_tag, args_t, cfg.templates_t.langx);
end
args_t.rtl = args_t.rtl or (rtl_t[args_t.code] and cfg.keywords_t.affirmative); -- prefer |rtl= in template call, use rtl_t else
args_t.link = args_t.link or link_t[args_t.code]; -- prefer |link= in template call, use link_t felse
args_t.size = args_t.size or size_t[args_t.code]; -- prefer |size= in template call, use size_t else
args_t[1] = nil; -- unset to mimic {{lang-??}} templates which set |code=xx
local lang_subtag = args_t.code; -- use only the base language subtag for unsupported tag test; some args_t.code are modified by |script= etc
return _lang_xx (args_t, cfg.templates_t.langx);
end
--[[--------------------------< L A N G X >--------------------------------------------------------------------
Entry point for {{langx}}.
this function calls _lang_xx() to render non-English text. The {{lang-??}} templates have three positional paramters
but {{langx}} has four:
| 1 | 2 | 3 | 4
{{lang-xx |<text> |<xlit> |<xlat> }}
{{langx |<tag> |<text> |<xlit> |<xlat> }}
The calls to lang_xx_args_get() and _lang_xx() use 'langx' as a flag for those functions to select the proper
positional parameters.
{{lang-??}} depends on the calling template to select 'inherit' or 'italic' to establish the default rendering.
{{langx}} can't do that. The initial version of {{langx}} relied on a list of language tags (inherit_t in ~/langx)
scraped from those {{lang-??}} templates that call lang_xx_inherit() to render text in upright font. langx() now
uses auto-italics code adapted from {{lang}} (doesn't support poem tags).
]]
local function langx (frame)
local args_t = lang_xx_args_get (frame, cfg.templates_t.langx); -- get the arguments; 'langx' is the <base_template> used to decide which positional param is 'text', 'translit', 'lit'
return _langx (args_t);
end
--[[--------------------------< _ I S _ I E T F _ T A G >------------------------------------------------------
Returns true when a language name associated with IETF language tag exists; nil else. IETF language tag must be valid.
All code combinations supported by {{lang}} and the {{lang-??}} templates are supported by this function.
Module entry point from another module.
]]
local function _is_ietf_tag (tag) -- entry point when this module is require()d into another
local c, s, r, v, p, err; -- code, script, region, variant, private, error message
c, s, r, v, p, err = get_ietf_parts (tag); -- disassemble tag into constituent part and validate
return ((c and not err) and true) or nil; -- return true when code portion has a value without error message; nil else
end
--[[--------------------------< I S _ I E T F _ T A G >--------------------------------------------------------
Module entry point from an {{#invoke:}}.
]]
local function is_ietf_tag (frame)
return _is_ietf_tag (getArgs (frame)[1]); -- args[1] is the IETF language tag to be tested; also get parent frame
end
--[[--------------------------< I S _ I E T F _ T A G _ F R A M E >--------------------------------------------
Module entry point from an {{#invoke:}}; same as is_ietf_tag() except does not get parameters from the parent
(template) frame. This function not useful when called by {{lang|fn=is_ietf_tag_frame|<tag>}} because <tag>
is in the parent frame.
]]
local function is_ietf_tag_frame (frame)
return _is_ietf_tag (getArgs (frame, {frameOnly = true,})[1]); -- args[1] is the IETF language tag to be tested; do not get parent frame
end
--[[--------------------------< _ N A M E _ F R O M _ T A G >--------------------------------------------------
Returns language name associated with IETF language tag if valid; error message else.
All code combinations supported by {{lang}} and the {{lang-??}} templates are supported by this function.
Set invoke's |link= parameter to yes to get wikilinked version of the language name.
Module entry point from another module.
]]
local function _name_from_tag (args)
local subtags = {}; -- IETF subtags script, region, variant, and private
local raw_code = args[1]; -- save a copy of the input IETF subtag
local link = cfg.keywords_t.affirmative == args['link']; -- make a boolean
local label = args.label;
local code; -- the language code
local msg; -- gets an error message if IETF language tag is malformed or invalid
local language_name = '';
code, subtags.script, subtags.region, subtags.variant, subtags.private, msg = get_ietf_parts (raw_code);
if msg then
local template = (args['template'] and table.concat ({'{{', args['template'], '}}: '})) or ''; -- make template name (if provided by the template)
return make_error_span (template, msg);
end
raw_code = format_ietf_tag (code, subtags.script, subtags.region, subtags.variant, subtags.private); -- format to recommended subtag styles; private omitted because private
language_name = language_name_get (raw_code, code); -- get language name; try IETF tag first, then code w/o variant then code w/ variant
if 'yes' ~= args.raw then
language_name = language_name:gsub ('%s+%b()', ''); -- remove IANA parenthetical disambiguators or qualifiers from names that have them
end
if link then -- when |link=yes, wikilink the language name
if mw.ustring.find (language_name, 'languages', 1, true) then
language_name = make_wikilink (language_name, label); -- collective language name uses simple wikilink
elseif lang_data.article_name[raw_code:lower()] then -- is IETF tag in article name override?
language_name = make_wikilink (lang_data.article_name[raw_code:lower()], label or language_name); -- language name with wikilink from override data
elseif lang_data.article_name[code] then -- is language tag in article name override?
language_name = make_wikilink (lang_data.article_name[code], label or language_name); -- language name with wikilink from override data
else
language_name = make_wikilink (substitute ('$1 $2', {language_name, cfg.misc_text_t.language}), label or language_name); -- language name with wikilink
end
end
return language_name;
end
--[[--------------------------< N A M E _ F R O M _ T A G >----------------------------------------------------
Module entry point from an {{#invoke:}}.
]]
local function name_from_tag (frame) -- entry point from an {{#invoke:lang|name_from_tag|<IETF tag>|link=<yes>|template=<template name>}}
return _name_from_tag (getArgs(frame)) -- pass-on the args table, nothing else; getArgs() so we also get parent frame
end
--[[--------------------------< _ T A G _ F R O M _ N A M E >--------------------------------------------------
Returns the IETF language tag associated with the language name. Spelling of language name must be correct
according to the spelling in the source tables. When a standard language name has a parenthetical disambiguator,
that disambiguator must be omitted (they are not present in the data name-to-tag tables).
Module entry point from another module.
]]
local function _tag_from_name (args) -- entry point from another module
local msg;
if args[1] and '' ~= args[1] then
local data = mw.loadData ('Module:Lang/tag from name'); -- get the reversed data tables TODO: change when going live
local lang = args[1]:lower(); -- allow any-case for the language name (speeling must till be correct)
local tag = data.rev_override_table[lang] or data.rev_lang_table[lang] or data.rev_lang_dep_table[lang]; -- get the code; look first in the override then in the standard
if tag then
return tag, true; -- language name found so return tag and done; second return used by is_lang_name()
else
msg = substitute (cfg.tag_from_name_t.lang_not_found, {args[1]}); -- language name not found, error message
end
else
msg = cfg.tag_from_name_t.missing_lang_name; -- language name not found, error message
end
local template = '';
if args.template and '' ~= args.template then
template = table.concat ({'{{', args['template'], '}}: '}); -- make template name (if provided by the template)
end
return make_error_span (template, msg);
end
--[[--------------------------< T A G _ F R O M _ N A M E >----------------------------------------------------
Module entry point from an {{#invoke:}}.
]]
local function tag_from_name (frame) -- entry point from an {{#invoke:lang|tag_from_name|<language name>|link=<yes>|template=<template name>}}
local result, _ = _tag_from_name (getArgs(frame)) -- pass-on the args table, nothing else; getArgs() so we also get parent frame; supress second return used by is_lang_name()
return result;
end
--[[--------------------------< I S _ L A N G _ N A M E >------------------------------------------------------
Module entry point from an {{#invoke:}}.
]]
local function is_lang_name (frame)
local _, result = _tag_from_name (getArgs(frame)) -- pass-on the args table, nothing else; getArgs() so we also get parent frame; supress second return used by tag_from_name()
return result and true or nil;
end
--[[--------------------------< _ X L I T >--------------------------------------------------------------------
Module entry point from another module.
]]
local function _xlit (args)
local title_table = lang_data.translit_title_table; -- table of transliteration standards and the language codes and scripts that apply to those standards
local language_name; -- language name that matches language code; used for tool tip
local translit; -- transliterated text to display
local script; -- IANA script
local msg; -- for when called functions return an error message
local template = args.template or cfg.templates_t.transliteration;
maint_cats = {}; -- initialize because when this module required into another module, these only declared once so only initialzed once
maint_msgs = {};
if is_set (args[3]) then -- [3] set when {{transliteration|code|standard|text}}
args.text = args[3]; -- get the transliterated text
args.translit_std = args[2] and args[2]:lower(); -- get the standard; lower case for table indexing
if not title_table[args.translit_std] then
return make_error_msg (substitute (cfg.transl_t.unrecog_xlit_std, {args.translit_std}), args, template);
end
else
if is_set (args[2]) then -- [2] set when {{transliteration|code|text}}
args.text = args[2]; -- get the transliterated text
else
if args[1] and (args[1]:match ('^%a%a%a?%a?$') or -- args[2] missing; is args[1] a language or script tag or is it the transliterated text?
args[1]:match ('^%a%a%a?%-x%-')) then -- or is args[1] a private-use tag
return make_error_msg (cfg.transl_t.no_text, args, template); -- args[1] is a code so we're missing text
else
args.text = args[1]; -- args[1] is not a code so we're missing that; assign args.text for error message
return make_error_msg (cfg.transl_t.missing_lang_scr, args, template);
end
end
end
if is_set (args[1]) then -- IANA language code used for HTML lang= attribute; or ISO 15924 script code
if args[1]:match ('^%a%a%a?%a?$') or args[1]:match ('^%a%a%a?%-x%-') then -- args[1] has correct form?
args.code = args[1]:lower(); -- use the language/script code; only (2, 3, or 4 alpha characters) or private-use; lower case because table indexes are lower case
else
return make_error_msg (substitute (cfg.transl_t.unrecog_lang_scr, {args[1]}), args, template); -- invalid language / script code
end
else
return make_error_msg (cfg.transl_t.missing_lang_scr, args, template); -- missing language / script code so quit
end
local is_latn_text, pos, char;
is_latn_text, args.text, pos, char= is_latin (args.text, args.code); -- is latn text? strip accept-as-written markup
if not is_latn_text then -- when text is not latn
return make_error_msg (substitute (cfg.lang_xx_t.translit_nonlatn, {pos, char}), args, template); -- abandon with error message
end
args.italic, msg = validate_italic (args);
if msg then
return make_error_msg (msg, args, template);
end
if 'italic' == args.italic then -- 'italic' when |italic=yes; because that is same as absent or not set and |italic=default
args.italic = nil; -- set to nil;
end
args.engvar = cfg.engvar_sel_t[args.engvar] or cfg.default_engvar; -- |engvar= when valid; cfg.default_engvar else
if override_table[args.code] then -- is code a language code defined in the override table?
language_name = override_table[args.code];
args.code = args.code:match ('^%a%a%a?'); -- if private use, strip all but language subtag
elseif lang_table[args.code] then -- is code a language code defined in the standard language code tables?
language_name = lang_table[args.code];
elseif lang_dep_table[args.code] then -- is code a language code defined in the deprecated language code tables?
language_name = lang_dep_table[args.code];
elseif script_table[args.code] then -- if here, code is not a language code; is it a script code?
language_name = script_table[args.code];
script = args.code; -- code was an ISO 15924 script so use that instead
args.code = ''; -- unset because not a language code
else
return make_error_msg (substitute (cfg.transl_t.unrecog_lang_scr, {args.code}), args, template); -- invalid language / script code
end
-- here only when all parameters passed to make_translit() are valid
return make_translit (args.code, language_name, args.text, args.translit_std, script, args.italic, args.engvar);
end
--[[--------------------------< X L I T >----------------------------------------------------------------------
Module entry point from an {{#invoke:}}.
]]
local function xlit (frame)
return _xlit (getArgs(frame));
end
--[[--------------------------< C A T E G O R Y _ F R O M _ T A G >--------------------------------------------
Returns category name associated with IETF language tag if valid; error message else.
All code combinations supported by {{lang}} and the {{lang-??}} templates are supported by this function.
Module entry point from another module.
]]
local function _category_from_tag (args_t)
local subtags = {}; -- IETF subtags script, region, variant, and private
local raw_code = args_t[1]; -- save a copy of the input IETF subtag
local link = cfg.keywords_t.affirmative == args_t.link; -- make a boolean
local label = args_t.label;
local code; -- the language code
local msg; -- gets an error message if IETF language tag is malformed or invalid
local category_name = '';
code, subtags.script, subtags.region, subtags.variant, subtags.private, msg = get_ietf_parts (raw_code);
if msg then
local template = (args_t.template and table.concat ({'{{', args_t.template, '}}: '})) or ''; -- make template name (if provided by the template)
return make_error_span (template, msg);
end
raw_code = format_ietf_tag (code, subtags.script, subtags.region, subtags.variant, subtags.private); -- format to recommended subtag styles; private omitted because private
category_name = language_name_get (raw_code, code); -- get language name; try IETF tag first, then code w/o variant then code w/ variant
category_name = make_category (code, category_name, nil, true):gsub ('[%[%]]', '');
if link then
return table.concat ({'[[:', category_name, ']]'});
else
return category_name;
end
end
--[[--------------------------< C A T E G O R Y _ F R O M _ T A G >--------------------------------------------
Module entry point from an {{#invoke:}}.
]]
local function category_from_tag (frame) -- entry point from an {{#invoke:lang|category_from_tag|<IETF tag>|template=<template name>}}
return _category_from_tag (getArgs (frame)); -- pass-on the args table, nothing else; getArgs() so we also get parent frame
end
--[[--------------------------< E X P O R T E D F U N C T I O N S >------------------------------------------
]]
return {
category_from_tag = category_from_tag, -- frame entry points when this module is #invoke:ed into templates/wikitext
lang = lang, -- entry point for {{lang}}
langx = langx, -- entry point for {{langx}}
lang_xx_inherit = lang_xx_inherit, -- entry points for {{lang-??}}
lang_xx_italic = lang_xx_italic,
is_ietf_tag = is_ietf_tag,
is_ietf_tag_frame = is_ietf_tag_frame,
is_lang_name = is_lang_name,
tag_from_name = tag_from_name, -- returns IETF tag associated with language name
name_from_tag = name_from_tag, -- used for template documentation; possible use in ISO 639 name from code templates
xlit = xlit, -- entry point for {{transliteration}}
_category_from_tag = _category_from_tag, -- API entry points when this module is require()d into other modules
_lang = _lang,
_langx = _langx,
_lang_xx_inherit = _lang_xx_inherit,
_lang_xx_italic = _lang_xx_italic,
_is_ietf_tag = _is_ietf_tag,
get_ietf_parts = get_ietf_parts,
_tag_from_name = _tag_from_name,
_name_from_tag = _name_from_tag,
_xlit = _xlit,
_translation_make = translation_make,
};
4lchs3y6tbwcup48cwp3ayuhrxmusvw
ಜಾರಿಗೆ
0
8618
360867
281211
2026-05-18T09:09:13Z
ChiK
1136
Added {{[[Template:Unreferenced|Unreferenced]]}} tag
360867
wikitext
text/x-wiki
{{Unreferenced|date=ಮೇ ೨೦೨೬}}
'''ಜಾರಿಗೆ''' ಪಂಡ ಉಂದು ಒಂಜಿ ಪುಳಿತ್ತ ಪುದರ್. ಉಂದು ಕಾಡ್ ಡ್ ಬುಳೆಪಿ ಪುಳಿ. ಉಂದು ಕಿತ್ತಳೆದಾತ್ ಮಲ್ಲ ಉಪ್ಪುಂಡು. ನೆತ್ತ ಮರ ಮಲ್ಲಾದ್ಗ್ ಬುಳೆಪುಂಡು. ಇರೆಕ್ಕುಲು ದಪ್ಪಲಾ ಕಡು ಪಚ್ಚೆ ಬಣ್ಣದಲಾ ಆದುಪ್ಪುಂಡು. ನೆತ್ತ ಕಾಯಿ ಸುರುಟ್ಟು ಪಚ್ಚೆ ಬಣ್ಣದವುಲಾ ಬುಲೆನಗ ಮಂಜೊಲು ಬಣ್ಣ ಆಪುಂಡು.
== ಜಾರಿಗೆ ಬಳಕೆ ಎಂಚ==
ಜಾರಿಗೆ ಬುಳೆದ್ ಮಂಜೊಲು ಬಣ್ಣ ಬನ್ನಗ ಅವೆನ್ ಕೊಯ್ದ್ ರಡ್ಡ್ ಭಾಗ ಮಲ್ತ್ ದ್ ಐತ ಉಳಯಿ ಇತ್ತಿ ಬೀಜೊನು ದೆತ್ತ್ ದ್ ಆ ಓಡುನು ದೊಂಬುಡು ನುಂಗಾಂಡ ಬಳಕೆಗ್ ತಯಾರಾಪುಂಡು. ಉಂದೆತ್ತ ಚೋಳಿನ್ ಬಳಕೆ ಮಲ್ಪುನಾಂಡಲಾ ನೇರ ಅವೆನ್ ಬಳಕೆ ಮಲ್ಪೆರೆ ಆಪುಜಿ. ಆ ಓಡುನು ನೀರ್ ಡ್ ನನೆಯೆರೆ ಪಾಡ್ದ್ ಆ ನೀರ್ ನ್ ಮಾತ್ರ ಬಳಕೆ ಆಪುಂಡು. ನುಂಗಯಿನ ಜಾರಿಗೆ ಸುರುಟ್ಟು ಮಂಜೊಲು ಬಣ್ಣ ಪುಪ್ಪುಂಡು. ವರ್ಷ ಕರಿಬುಕ್ಕೊ ಕಪ್ಪು ಬಣ್ಣ ಆಪುಂಡು.
==ಗಳಸುನ==
ಮೀನ್ ಕಜಿಪು ಮಲ್ಪುನಗ ಪುಣ್ಕೆ ಪುಳಿತ್ತ ಬದಲ್ ಗ್ ಈ ಪುಳಿನ್ ಬಳಕೆ ಮಲ್ಪೊಲಿ. ಆಂಡ ಪುಣ್ಕೆದ ಪುಳಿನ್ ಅರೆಪು ಕಡೆನಗ ಒಟ್ಟುಗು ಕಡೆವೊಲಿ. ಜಾರಿಗೆ ಪುಳಿತ್ತ ನೀರ್ ಮಾತ್ರ ಪಾಡ್ದ್ ಕಜಿಪು ಮಲ್ಪೊಡು. ತುದೆತ್ತ ಮೀನ್ ದ ಕಜಿಪುಗು ಜಾರಿಗೆ ಪುಳಿನ್ ಹೆಚ್ಚಾದ್ ಬಳಕೆ ಮಲ್ಪುವೆರ್. ಪೆದ್ಮೆದಿ ಮರ್ದ್ ಗ್ ಜಾರಿಗೆ ಬಳಕೆ ಮಲ್ಪುವೆರ್. ಒಮದ ಪಲದೆಗ್ ಲಾ ಜಾರಿಗೆ ಪುಳಿನ್ ಬಳಕೆ ಮಲ್ಪುವೆರ್.
== ಉಲ್ಲೇಕೊಲು ==
{{Reflist}}
{{ಪರ್ಂದ್ಲು}}
[[ವರ್ಗೊ:ಪರ್ಂದ್]]
759ngmj8960uw4tmllpdnncoomgsuvy
ಇಟಲಿ
0
8654
360822
360808
2026-05-18T00:09:19Z
CommonsDelinker
412
Replacing L'Aquila_-_basilica_di_Santa_Maria_di_Collemaggio_-_facciata_-_08.jpg with [[File:L'Aquila_2007_-_basilica_di_Santa_Maria_di_Collemaggio_-_facciata_-_by-RaBoe_008.jpg]] (by [[:c:User:CommonsDelinker|CommonsDelinker]] because: [[:c:COM:FR|File re
360822
wikitext
text/x-wiki
{{under construction}}
{{Infobox country
| conventional_long_name = ಇಟಾಲಿಯನ್ ಗಣರಾಜ್ಯೊ
| common_name = Italy
| native_name = ರಿಪಬ್ಲಿಕಾ ಇಟಾಲಿಯಾನ (<small>ಇಟಾಲಿಯನ್ ಬಾಸೆಡ್<small>)
| image_flag = Flag of Italy.svg
| image_coat = Emblem of Italy.svg
| symbol_type = ಲಾಂಛನ
| national_anthem = "Il Canto degli Italiani"<br/>"The
Song of the Italians"<div style="padding-top:0.5em;">{{Center|[[File:Canto degli Italiani - Marina Militare (strumentale).wav]]}}</div>
| image_map = [[File:EU-Italy (orthographic projection).svg|frameless]]
| capital = [[ರೋಮ್]]
| coordinates = {{Coord|41|54|N|12|29|E|type:city}}
| largest_city = ರೋಮ್
| languages_type =
| languages =
| official_languages = ಇಟಾಲಿಯನ್ ಬಾಸೆ
{{Infobox|child=yes
|label1 = ರಾಷ್ಟ್ರೀಯತೆ {{Nobold|(2021)}}<ref name="id2020">{{Cite web|title=Indicatori demografici, anno 2020 |url=https://www.istat.it/it/files//2021/05/REPORT_INDICATORI-DEMOGRAFICI-2020.pdf|url-status=live|archive-url=https://web.archive.org/web/20210503091112/https://www.istat.it/it/files//2021/05/REPORT_INDICATORI-DEMOGRAFICI-2020.pdf|archive-date=3 May 2021|access-date=3 May 2021}}</ref>
| data1 = {{Unbulleted list|91% ಇಟಲಿಯನ್ನೆರ್|9% ಬೇತೆ}}
}}
| religion = {{Ublist|item_style=white-space:nowrap;|84% ಕ್ರಿಸ್ತನೆರ್|12% ಜಾತಿದಾಂತಿನಕ್ಲು|4% ಬೇತೆ}}
| religion_year = 2020
| religion_ref = <ref>{{Cite web|date=September 2021|title=Special Eurobarometer 516|url=https://data.europa.eu/data/datasets/s2237_95_2_516_eng?locale=en|url-status=live|archive-url=https://web.archive.org/web/20230629085321/http://data.europa.eu/data/datasets/s2237_95_2_516_eng?locale=en|archive-date=29 June 2023|access-date=24 September 2021|publisher=European Union: [[European Commission]]|via=[[European Data Portal]] (see Volume C: Country/socio-demographics: IT: Question D90.2.)}}</ref>
| demonym = ಇಟಲಿಯನ್ನೆರ್
| government_type = ಏಕೀಕೃತ ಸಂಸದೀಯ ಗಣರಾಜ್ಯ
| leader_title1 = ರಾಷ್ಟ್ರಪತಿ
| leader_name1 = ಸೆರ್ಗಿಯೊ ಮಟರೆಲ್ಲಾ
| leader_title2 = ಪ್ರಧಾನಿ
| leader_name2 = ಜಾರ್ಜಿಯಾ ಮೆಲೊನಿ
| leader_title3 =
| leader_name3 = ಇಗ್ನಾಸಿಯೋ ಲಾ ರುಸಾ
| leader_title4 = ಚೇಂಬರ್ ಆಫ್ ಡೆಪುಟೀಸ್(ಕೆಳಮನೆ) ದ ಅದ್ಯಕ್ಸೆರ್
| leader_name4 = ಲೊರೆಂಝೋ ಫೋಂಟಾನಾ
| legislature = ಸಂಸತ್
| upper_house = ಸೆನೆಟ್
| lower_house = ಚೇಂಬರ್ ಆಫ್ ಡೆಪುಟೀಸ್
| sovereignty_type = [[History of Italy|Historical polities]]
| established_event1 = [[Ancient peoples of Italy|Italic peoples]]
| established_date1 = Antiquity
| established_event2 = [[Ancient Rome]]<br>[[Roman Italy]]
| established_date2 = 753 BC–476 AD
| established_event3 = [[Barbarian kingdoms|Roman-Barbarian kingdoms]]<br>[[Byzantine Italy]]
| established_date3 = Early Middle Ages
| established_event4 = [[List of historical states of Italy|Italian city-states and regional polities]]
| established_date4 = [[Italy in the Middle Ages|Middle Ages]] and Modern period
| established_event5 = [[Kingdom of Italy]]
| established_date5 = 1861–1946<br>{{start date and age|1861|03|17|df=y}}
| established_event6 = [[Italian Empire]]
| established_date6 = 1882–1960
| established_event7 = [[1946 Italian institutional referendum|Italian Republic]]
| established_date7 = {{start date and age|1946|06|02|df=y}}
| area_km2 = 301,340
| area_footnote = <ref name="Central Intelligence Agency-2023">{{Cite web|date=23 August 2023|title=Italy|url=https://www.cia.gov/the-world-factbook/countries/italy|url-status=live|archive-url=https://web.archive.org/web/20210701235642/https://www.cia.gov/the-world-factbook/countries/italy|archive-date=1 July 2021|access-date=28 August 2023|publisher=Central Intelligence Agency}}</ref><ref>{{Cite web|date=12 November 2023|title=Italy country profile|url=https://www.bbc.com/news/world-europe-17433142|url-status=live|archive-url=https://web.archive.org/web/20231218111602/https://www.bbc.com/news/world-europe-17433142|archive-date=18 December 2023|access-date=12 November 2023|publisher=BBC News}}</ref>
| area_rank = 71st
| area_sq_mi = 116,347 <!--Do not remove per [[Wikipedia:Manual of Style/Dates and numbers]]-->
| percent_water = 1.24 (2015)<ref>{{Cite web|title=Surface water and surface water change|url=https://stats.oecd.org/Index.aspx?DataSetCode=SURFACE_WATER|url-status=live|archive-url=https://web.archive.org/web/20210324133453/https://stats.oecd.org/Index.aspx?DataSetCode=SURFACE_WATER|archive-date=24 March 2021|access-date=11 October 2020|publisher=[[Organisation for Economic Co-operation and Development]] (OECD)}}</ref>
| population_estimate = {{DecreaseNeutral}} 58,915,561<ref name="population">{{cite web|title=Monthly Demographic Balance|url=https://demo.istat.it/app/?l=en&a=&i=D7B|publisher=[[Italian National Institute of Statistics|ISTAT]]}}</ref>
| population_estimate_year = 2025
| population_estimate_rank = 25th
| population_density_km2 = 195.5
| population_density_sq_mi = auto<!--Do not remove per [[Wikipedia:Manual of Style/Dates and numbers]]-->
| population_density_rank = 72nd
| GDP_PPP = {{Increase}} $3.719 trillion<ref name="IMFWEO.IT">{{cite web |url=https://www.imf.org/en/Publications/WEO/weo-database/2025/april/weo-report?c=136,&s=NGDPD,PPPGDP,NGDPDPC,PPPPC,&sy=2023&ey=2030&ssm=0&scsm=1&scc=0&ssd=1&ssc=0&sic=0&sort=country&ds=.&br=1 |title=World Economic Outlook Database, April 2025 Edition. (Italy) |publisher=[[International Monetary Fund]] |website=www.imf.org |date=22 April 2025 |access-date=26 May 2025}}</ref>
| GDP_PPP_year = 2025
| GDP_PPP_rank = 11th
| GDP_PPP_per_capita = {{Increase}} $63,076<ref name="IMFWEO.IT"/>
| GDP_PPP_per_capita_rank = 29th
| GDP_nominal = {{Increase}} $2.423 trillion<ref name="IMFWEO.IT"/>
| GDP_nominal_year = 2025
| GDP_nominal_rank = 8th
| GDP_nominal_per_capita = {{Increase}} $41,091<ref name="IMFWEO.IT"/>
| GDP_nominal_per_capita_rank = 27th
| Gini = 32.5 <!--number only-->
| Gini_year = 2020
| Gini_change = decrease <!--increase/steady/decrease-->
| Gini_ref = <ref>{{Cite web|title=Gini coefficient of equivalised disposable income – EU-SILC survey|url=https://ec.europa.eu/eurostat/databrowser/view/tessi190/default/table?lang=en|url-status=live|archive-url=https://web.archive.org/web/20201009091832/https://ec.europa.eu/eurostat/databrowser/view/tessi190/default/table?lang=en|archive-date=9 October 2020|access-date=21 June 2022|publisher=European Commission}}</ref>
| HDI = 0.915 <!--number only-->
| HDI_year = 2023<!-- Please use the year to which the data refers, not the publication year-->
| HDI_change = increase <!--increase/decrease/steady-->
| HDI_ref = <ref name="UNHDR">{{Cite web |date=6 May 2025 |title=Human Development Report 2025 |url=https://hdr.undp.org/system/files/documents/global-report-document/hdr2025reporten.pdf|url-status=live |archive-url=https://web.archive.org/web/20250506051232/https://hdr.undp.org/system/files/documents/global-report-document/hdr2025reporten.pdf |archive-date=6 May 2025 |access-date=6 May 2025 |publisher=[[United Nations Development Programme]] |language=en}}</ref>
| HDI_rank = 29th
| currency = [[Euro]] (€)<sup>b</sup>
| currency_code = EUR
| time_zone = [[Central European Time|CET]]
| utc_offset = +1
| utc_offset_DST = +2
| time_zone_DST = [[Central European Summer Time|CEST]]
| calling_code = [[+39]] <sup>c</sup>
| cctld = [[.it]]
| footnote_a = <span style="font-size:100%;">German is co-official in [[South Tyrol]] and [[Friuli-Venezia Giulia]]; French is co-official in the [[Aosta Valley]]; [[Slovene language|Slovene]] is co-official in the [[province of Trieste]], the [[province of Gorizia]], and Friuli-Venezia Giulia; [[Ladin language|Ladin]] is co-official in South Tyrol, in [[Trentino]] and in other northern areas; [[Friulian language|Friulian]] is co-official in Friuli-Venezia Giulia; [[Sardinian language|Sardinian]] is co-official in [[Sardinia]].<ref>{{Cite web|title=Legge Regionale 15 ottobre 1997, n. 26 |url=http://www.regione.sardegna.it/j/v/86?v=9&c=72&file=1997026|url-status=dead|archive-url=https://web.archive.org/web/20210226213750/http://www.regione.sardegna.it/j/v/86?v=9&c=72&file=1997026|archive-date=26 February 2021|access-date=31 May 2018|publisher=Regione autonoma della Sardegna – Regione Autònoma de Sardigna}}; {{Cite web|title=Regione Autonoma Friuli-Venezia Giulia – Comunità linguistiche regionali|url=https://www.regione.fvg.it/rafvg/cms/RAFVG/cultura-sport/patrimonio-culturale/comunita-linguistiche|url-status=live|archive-url=https://web.archive.org/web/20150904201140/https://www.regione.fvg.it/rafvg/cms/RAFVG/cultura-sport/patrimonio-culturale/comunita-linguistiche|archive-date=4 September 2015|access-date=2 November 2020|website=regione.fvg.it}}</ref></span>
| footnote_b = <span style="font-size:100%;">Before 2002, the [[Italian lira]]. The euro is accepted in [[Campione d'Italia]], but its official currency is the [[Swiss franc]].<ref>{{Cite web|date=14 July 2010|title=Comune di Campione d'Italia|url=http://www.comune.campione-d-italia.co.it/|url-status=live|archive-url=https://web.archive.org/web/20110430223743/http://www.comune.campione-d-italia.co.it/|archive-date=30 April 2011|access-date=30 October 2010|publisher=Comune.campione-d-italia.co.it}}</ref></span>
| footnote_c = <span style="font-size:100%;">To call Campione d'Italia, it is necessary to use the Swiss code [[+41]].</span>
}}
ರೋಮನ್ ಸಾಮ್ರಾಜ್ಯೊದ ಅಪ್ಪೆ ಸಾನೊ '''ಇಟಲಿ''' ಮೆಡಿಟರೇನಿಯನ್ ಕಡಲ್ಡ್ ನೀರ್ದ್ ಉಂತ್ನ ದಿಂಜ ಕಿನ್ಯ ದ್ವೀಪೊ. ಗಾತ್ರೊಡು ಕಿನ್ಯ ಆಂಡಲಾ ಪಿರಾಕ್ದ್ ಕಾಲೊಡು ಉಂದು ಹೊಂದ್ದಿತ್ತಿನ ವ್ಯಾಪ್ತಿ ಅಚ್ಚರಿಯಾಪುನಂಚಿನವು. ರೋಮನ್ ಸಾಮ್ರಾಜ್ಯೊಗು ಇತ್ತಿನ ವಿಸ್ತಾರೊ ಬುಕ್ಕೊ ಅಚ್ಚ್ಕಟ್ಟ್ ಬೇತೆ ಒವ್ವೇ ಸಾಮ್ರಾಜ್ಯೊಗು ಬರಂದ್ಬ. ರೋಂ ಅಯಿತ ಬುಲೆಚಿಲ್ದ್ ಸ್ತಿತಿಡ್ ಆನಿದ ನಾಗರಿಕ ಪ್ರಪಂಚನೊ ಒಂಜಿ ಕೊಡೆದಡಿಟ್ ಸೇರಾವೊಂದು ಆಳ್ಂಡ್. ಅಯಿತ ವೈಬವೊ ತೋಜುನಂಚಿನವು, ಶಕ್ತಿ ಅದಮ್ಯೊ. ವಿಸ್ತಾರವಾಯಿನ ಸಾಮ್ರಾಜ್ಯೊಡು ಅವು ಏರ್ಪಾಟ್ ಆಡಳಿತೊ ವ್ಯವಸ್ಥೆ, ನ್ಯಾಯೊ, ಬದುಕುನ ಕ್ರಮೊ ಉಂದು ಇಡೀ ಸಾಮ್ರಾಜ್ಯೊದ ಐಕ್ಯೊಗು ಸಕಾಯೊ ಆಪುಂಡು.
== ಹಿನ್ನೆಲೆ ==
[[ರೋಮ್]]ಡ್ ನಡತಿನ ಈ ಬೃಹತ್ ವ್ಯವಹಾರೊಗು ಇಟಲಿದ ಭೂಮಿ ಆಶ್ರಯ ಕೊರ್ಂಡ್. ರೋಮನೆರ [[ಚರಿತ್ರೆ]], [[ನಾಗರಿಕತೆ]], [[ಸಂಸ್ಕೃತಿ]], ಕಲೆ ಇಂಚಿತ್ತಿ ವಿಸಯೊಡು ಅಲ್ಪಲ್ಪ ಪ್ರತ್ಯೇಕವಾದ್ ಬತ್ತ್ದ್ಂಡ್. ಮುಲ್ಪ ಇಟಲಿದ ಬಗೆಟ್ ಬತ್ತಿನ ಲೇಕನೊಲೆಡ್ ಆ ವಿಸಯೊಲೆ ಸಂಗ್ರಹ ನಿರೂಪಣೆ ಉಂಡು. ಮುಲ್ಪದ ಲೇಕನೊಲೆ ವ್ಯವಸ್ಥೆ ಇಂಚ ಉಂಡು. ಇಟಲಿ ಪನ್ಪುನ ಲೇಕನೊಡು ಅಯಿತ ಭೌಗೋಳಿಕ, ವಾಣಿಜ್ಯ ವಿಸಯೊಲೆ ವಿವರೊ ಉಂಡು. ಇಟಲಿದ [[ಇತಿಹಾಸ]], ಕಲೆ, [[ಛಂದಸ್ಸು]], [[ಬಾಸೆ]], [[ಸಂಗೀತ]], ಸಾಹಿತ್ಯ, ಸಾಹಿತ್ಯ ವಿಮರ್ಶೆಲೆ ಬಗೆಟ್ ಬೇತೆನೆ ತರೆಬರವು ಉಂಡು. ಇಟಲಿದ ಪ್ರಸಿದ್ಧ ವ್ಯಕ್ತಿಲೆ ಬಗೆಟ್ ಪ್ರಾಸ್ತಾವಿಕವಾದ್ ಕೆಲವು ವಿಸಯೊಲು ಈ ಪರಪುಡು ಬತ್ತ್ಂಡಲಾ ಅಕ್ಲೆನ ಬದ್ಕ್ ಬುಕ್ಕೊ ಸಾಧನೆಲೆ ಬಗೆಟ್ ವಿವರೊಲೆನ್ ಆಯಾ ವ್ಯಕ್ತಿಲೆನ ಕುರಿತಾದ್ ಲೇಕನೊಲೆಡ್ ಕೊರ್ತ್ಂಡ್.
== ಭೌಗೋಳಿಕ ವಿವರೊ ==
ಇಟಲಿ ದಕ್ಷಿಣ ಯೂರೋಪ್ದ ಒಂಜಿ ಗಣರಾಜ್ಯ (ರಿಪಬ್ಲಿಕಾ ಇಟಾಲಿಯಾನೊದ ಅತ್ತಂಡ ಇಟಾಲಿದ). ಯೂರೋಪುಡ್ದು ತೆನ್ಕಾಯಿ ಮೋನೆ ಆದ್ ಮೆಡಿಟರೇನಿಯನ್ ಕಡಲ್ದುಲಾಯಿ ಪರಡ್ನ ಮೂಜಿ ಪರ್ಯಾಯ ದ್ವೀಪೊಲೆಡ್ ನಡೂತವು; ಸಾನ್ ಮರೀನೊ ಬುಕ್ಕೊ ವ್ಯಾಟಿಕನ್ ನಗರ ಸೀಮೆಲೆನ್ ಬುಡ್ಂಡ ಒರಿನ ಬಾಗೊಲಾ ಈ ಬೂಸಿರೊದ ದುಂಬುದ ಬಾಗೊದಂಚ ಇಪ್ಪುನ ಸಿಸಿಲಿ ದ್ವೀಪೊ ಸಾರ್ಡಿನಿಯ, ಎಲ್ಬ ಬುಕ್ಕೊ ಸುಮಾರ್ ಎಲ್ಪೊ ಕಿನ್ಯ ದ್ವೀಪೊಲು ಸೇರ್ನ ಪ್ರದೇಸೊ. ಎತ್ತರ ಹಿಮ್ಮಡಿದ ಬೋಟ್ದ ಆಕಾರೊದ ಈ ಪರ್ಯಾಯ ದ್ವೀಪೊ ವಾಯವ್ಯೊ ದಿಕ್ಕ್ಡ್ದ್ ಆಗ್ನೇಯೊಗು ರೈಲು ಸಾದಿದ ಕೈಮರದಂಚ ಚಾಚೊಂದುಂಡು. ಬಡೆಕಾಯಿ ಅಕ್ಷಾಂಸೊ 470 5 ಡ್ದ್ 350 39 ಬುಟ್ಟ 1168 ಕಿ.ಮೀ. ಉದ್ದೊ ಇಪ್ಪುನ ಈ ದೇಸೊ ಇಡೀ 240 ಕಿ.ಮೀ.ಡ್ದ್ ಅಗೆಲೊ ಆತ್ಜಿ. ಉಂದು ಪೂರ್ವಾರ್ಧಗೋಳಡ್ ಪಡ್ಡೋಯಿಡ್ದ್ ಮೂಡಾಯಿಗ್ ರೇಖಾಂಶ 60 55 ಡ್ದ್ 180 30 ಮುಟ್ಟ ಪರಡ್ದ್ಂಡ್. ಇಟಲಿಗ್ ಬಡೆಕಾಯಿಡ್ ಬಿಲ್ಲ್ದಂಚ ಬಗ್ಗ್ದ್ ಪರಡ್ನ ಆಲ್ಪ್ಸ್ ಪರ್ವತಶ್ರೇಣಿಡ್ದ್ ಫ್ರಾನ್ಸ್ ಸ್ವಿಟ್ಜರ್ಲೆಂಡ್ ಆಸ್ಟ್ರಿಯ ಯುಗೋಸ್ಲಾವಿಯಲು ಇಟಲಿಲಾ ಪ್ರತ್ಯೇಕ ಆದುಂಡು. ಆಲ್ಪ್ಸ್ ಪರ್ವತಶ್ರೇಣಿದ ನೆತ್ತಿದ ಗೆರೆನೆ ಬಾರಿ ಮಟ್ಟ್ಗ್ ಇಟಲಿಗ್ಲಾ ಈ ದೇಸೊಗ್ಲಾ ನಡುತ ಗಡಿರೇಕೆ. ಇಟಲಿ ಪರ್ಯಾಯ ದ್ವೀಪೊದ ವಾಯುವ್ಯೊಡು ಲುಗುರಿಯನ್ ಸಮುದ್ರೊಲಾ ಪಡ್ಡೋಯಿಡ್ ಟೆರ್ಪೆನಿಯನ್ ಕಡಲ್ಲಾ ಆಗ್ನೇಯೊಡು ಐಯೊನಿಯನ್ ಕಡಲ್ಲಾ ಮೂಡಾಯಿಡ್ ಒಡ್ರಿಯಾಟಿಕ್ ಕಡಲ್ಲಾ ಉಂಡು. ಸಿಸಿಲಿ ದ್ವೀಪೊ ಆಫ್ರಿಕೊಗು ನಡುಟು ಇಪ್ಪುನ ಸಿಸಿಲಿಯನ್ ಜಲಸಂದಿದ ಅಗೆಲೊ ೧೪೪ ಕಿ.ಮೀ. ಇಂಚಾದ್ಹೀ ಇಟಲಿಲಾ ಸಿಸಿಲಿಲಾ ಮೇಡಿಟರೇನಿಯನ್ ಕಡಲ್ನೇ ಸ್ಥೂಲವಾದ್ ರಡ್ಡ್ ಬಾಗೊ ಆದುಂಡು. ಸಿಸಿಲಿ ಸಾರ್ಡಿನಿಯಲು ಕೂಡ್ನ ಇಟಲಿದ ಒಟ್ಟು ವಿಸ್ತೀರ್ಣೊ ೩,೦೧,೨೫೦ ಚ.ಕಿ.ಮೀ. ಆಡಳಿತ ಸೌಕರ್ಯೊಗಾದ್ ಇಂದೆನ್ ೧೯ ಬಾಗೊಲಾದ್ ವಿಂಗಡಿಸಯರ ಆತ್ಂಡ್. ಇಟಲಿದ ರಾಜಧಾನಿ ರೋಂ. ಡಿಸೆಂಬರ್ ೧೯೬೭ಡ್ ಇತ್ತಿನಂಚ ಈ ದೇಸೊದ ಜನಸಂಕ್ಯೆ ೫,೩೬,೫೬,೦೦೦. ರಡ್ಡನೆ ಯುದ್ದೊಡ್ದ್ ಬುಕ್ಕೊ ೧೯೪೭ಡ್ ಶಾಂತಿ ಕೌಲಿಗ್ನು ಅನುಗುಣವಾದ್ ಈ ದೇಸೊದ ಗಡಿ ಚರ್ಚೆ ಆತ್ಂಡ್. ಯುದ್ಧೊಗು ದುಂಬು ಉಂದು ಹೊಂದ್ದ್ ಇತ್ತಿನ ವಸಾಹತುಲೆ ಮಿತ್ತ್ದ ಹಕ್ಕ್ಲೆನ್ ಬುಡುದು ಕೊರ್ತ್ಂಡ್. ಇಂದೆತ ಆಕ್ರಮಣೊಗು ಉಲಾಯಿ ಆಯಿನ ಇಥಿಯೋಪಿಯ (ತೂಲೆ- ಅಬಿಸೀನಿಯ) ೧೯೪೨ಡ್ ತನ್ನೊ ಸೊಸಂತ್ರೊನು ಕೂಡ ಗಳಸೊನ್ಂಡ್. ಡೊಡೆಕನೀಸನ್ನ್ ೧೯೪೭ಡ್ ಗ್ರೀಸ್ಗ್ ಸೇರಾಯರ ಆಂಡ್. (ತೀಲೆ- ಗ್ರೀಸ್ದ-ಚರಿತ್ರೆ) ಲಿಬಿಯ ೧೯೫೧ಡ್ ಸೊಸಂತ್ರೊ ಆಂಡ್. ಎರಿಟ್ಟ್ರಿದ ಪ್ರದೇಸೊ ೧೯೫೨ಡ್ ಇಥಿಯೋಪಿಯ ಒಕ್ಕೊಟಡ್ ಸೇರ್ದ್ಂಡ್. ಸೋಮಾಲಿಯ ೧೯೫೦ಡ್ ಇಟಲಿದ ನ್ಯಾಸಾಧಿಕಾರೊಗು ಸೇರ್ದ್ಂಡು. ೧೯೬೦ದ ಜುಲೈ ತಿಂಗಲುಡು ಸೊಸಂತ್ರ ಗಣರಾಜ್ಯೊ ಆಂಡ್.
== ಇಟೆಲಿದ ವಾಸ್ತುಶಿಲ್ಪೊದ ಚಿತ್ರೊಲು ==
<gallery>
Image:Torino-mole10.jpg|
Image:Sant'Andrea-Vercelli-FacciataDestra.jpg|
Image:Villa Rotonda side(2).jpg|
Image:Trieste miramare.jpg|
Image:Basilique Saint Marc.jpg|
Image:Venedig rialtobruecke.jpg|
Image:Italy-Genova-lighthouse.jpg|
Image:Modena duomo.jpg|
Image:PalazzoDucaleUrbino.JPG|
Image:Pisa - Campo Santo - Campanile 4 - 2005-08-08 17-30 4832.JPG|
Image:Cattedrale di Santa Maria del Fiore Florenz März 2014.jpg|
Image:Ponte Vecchio.jpg|
Image:035 Siena (Piazza Del Campo-Palazzo Pubblico).jpg|
Image:La fontana di trevi.jpg|
Image:L'Aquila 2007 - basilica di Santa Maria di Collemaggio - facciata - by-RaBoe 008.jpg|
Image:Naples from the Castello Sant Elmo with Abbazia San Martino the port and the Vesuv.jpg|
Image:Scala Reggia Casertana.jpg|
Image:Castel del Monte BW 2016-10-14 13-16-07.jpg|
Image:Alberobello Trulli.jpg|
Image:Modica San Giorgio1.jpg|
Image:Palermo-San-Cataldo-bjs-1.jpg|
Image:Monreale-bjs2007-02.jpg|
</gallery>
== ಉಲ್ಲೇಕೊಲು ==
{{Reflist}}
[[ವರ್ಗೊ:ಪ್ರೋಜೆಕ್ಟ್ ಟೈಗರ್-೨]]
[[ವರ್ಗೊ:ಪ್ರೋಜೆಕ್ಟ್ ಟೈಗರ್-೨ ಪಂತೊಗು ಬರೆಯಿನ ಲೇಕನೊ]]
[[ವರ್ಗೊ:ದೇಶೊಲು]]
28i16h4nvn9lme339nyfyn1grlvi932
ತಂಪುದ ಪಂರ್ದ್
0
9987
360866
196377
2026-05-18T09:08:18Z
ChiK
1136
Added {{[[Template:Unreferenced|Unreferenced]]}} tag
360866
wikitext
text/x-wiki
{{Unreferenced|date=ಮೇ ೨೦೨೬}}
[[ಫೈಲ್:Thampu.jpg|thumb]]
ಉಂದು ಒಂಜಿ ಕಾಡ ಪರ್ಂದ್. ತಿನ್ನಗ ಒಂತೆ ಪುಳಿ-ಚೀಪೆದ ರುಚಿ ಇಪ್ಪುಂಡು.
== ಬೇತೆ ಪುದರ್ ==
ತುಳುಟ್ಟು ಬೇತೆ ಬೇತೆ ಕಡೆಟ್ ಬೇತೆ ಬೇತೆ ಪುದರ್ಡ್ ಲೆಪ್ಪುವೆರ್. ಹಂಪುಲ್ ಪಂರ್ದ್, ಕಲ್ಲ್ ಸಂಪಿಗೆ ಪಂರ್ದ್, ಅರ್ಪುದ ಪಂರ್ದ್, ತೊಂಪೆದ ಪಂರ್ದ್, ಸಫಲ ಪಂರ್ದ್, ಅಬ್ಲುಕ ಪಂರ್ದ್, ಚಬುಕು ಪಂರ್ದ್ ಪನ್ಪೆರ್. ಕನ್ನಡಡ್ ಚಾಪೆ ಹಣ್ಣು, ಚಾಪಿ ಹಣ್ಣು, ಸಂಪಿಗೆ ಹಣ್ಣು, ಮುಳ್ಳುಸಂಪಿಗೆ ಹಣ್ಣು ಇಂಚ ಪೂರಾ ಪುದರುಂಡು. ಸಂಸ್ಕೃತೊಡು ವಿಕಂಟಕ ಲೆಪ್ಪುವೆರ್.
ಸೋಕುದ ಕೆಂಪು ಬಣ್ಣೊದ ಈ ಪಂರ್ದ್ನ್ ಸುಣ್ಣದೊಟ್ಟಿಗೆಲಾ ತಿನ್ಪೆರ್. ಅಂಚ ತಿಂದುಂಡ ಅಯಿತ ರುಚಿ ಎಚ್ಚ ಆಪುಂಡು.
== ತೂಯರೆ ==
ನೆತ್ತ ಮರ ತೂನಗ ಕಾಯೆರ್ದ ಮರಲೆಕ್ಕ ಉಪ್ಪುಂಡು. ತೋಟದ ಗೊಬ್ಬರಗ್ ಗಳಸುವೆರ್.
== ಮರ್ದ್ ==
ಮರತ್ತ ಕೆತ್ತೆ ಜಿಲಾಬು, ಗಂಟುಬೇನೆ, ಗಾಯದ ಬೇನೆಗ್ ಬಳಕೆ ಮಲ್ಪುವೆರ್. ಈ ಪಂರ್ದ್ ಲೆಕ್ಕೊರ್ದು ಜಾಸ್ತಿ ತಿಂದುಂಡ ಜಿಲಾಬು ಶುರು ಆಪುಂಡು.
== ಉಲ್ಲೇಕೊಲು ==
{{Reflist}}
{{ಪರ್ಂದ್ಲು}}
[[ವರ್ಗೊ:ಪರ್ಂದ್]]
h6nwzan3fpmexi5hdpc0qbt43qg4zrf
ಮೋಡ್ಯೂಲ್:Transclusion count/data/A
828
10225
360852
359748
2026-05-17T05:09:28Z
en>Ahechtbot
0
[[Wikipedia:BOT|Bot]]: Updated page.
360852
Scribunto
text/plain
return {
["A-Class"] = 5500,
["A2r"] = 2000,
["ACArt"] = 3800,
["AFB_game_box_end"] = 2500,
["AFB_game_box_start"] = 2500,
["AFB_game_box_start/styles.css"] = 2500,
["AFC_comment"] = 23000,
["AFC_submission"] = 32000,
["AFC_submission_category_header"] = 4600,
["AFD_help"] = 166000,
["AFD_help/styles.css"] = 166000,
["AFI/Picture_box/show_picture"] = 4100,
["AFI_film"] = 9900,
["AFL"] = 2100,
["AFL_Car"] = 2700,
["AFL_Col"] = 2500,
["AFL_Ess"] = 2600,
["AFL_Gee"] = 2600,
["AFL_Haw"] = 2400,
["AFL_Mel"] = 2700,
["AFL_NM"] = 2200,
["AFL_Ric"] = 2500,
["AFL_StK"] = 2700,
["AFL_Tables"] = 12000,
["AFL_Year"] = 2800,
["AFL_player"] = 2100,
["AI-generated"] = 7200,
["ALG"] = 2600,
["AMARB"] = 4400,
["AM_station_data"] = 4400,
["ARBPIA"] = 3200,
["ARE"] = 2200,
["ARG"] = 6900,
["ARM"] = 2100,
["ASIN"] = 5000,
["ASN"] = 3300,
["ATP"] = 5200,
["AUS"] = 15000,
["AUT"] = 10000,
["AZE"] = 2900,
["A_note"] = 5800,
["A_or_an"] = 12000,
["Aan"] = 62000,
["Abbr"] = 967000,
["Abbreviation"] = 3000,
["Abbrlink"] = 16000,
["Abot"] = 29000,
["About"] = 169000,
["Absolute_page_title"] = 4600,
["Acad"] = 6700,
["Access_icon"] = 3300,
["According_to_whom"] = 4600,
["AchievementTable"] = 11000,
["AdSenseSummary"] = 12000,
["Added"] = 2800,
["Adjacent_communities"] = 29000,
["Adjacent_stations"] = 42000,
["Adjacent_stations/styles.css"] = 42000,
["Adjacent_stations_doc"] = 2400,
["Adjstn"] = 2700,
["Admin"] = 15000,
["Admin_help/helped"] = 2200,
["Administrator_note"] = 6900,
["Administrators'_noticeboard_archives_all"] = 2100,
["Administrators'_noticeboard_navbox_all"] = 2100,
["Adminnote"] = 3600,
["Advert"] = 9400,
["Aet"] = 6900,
["AfC_accept/C_percentage"] = 6300,
["AfC_age_category"] = 4500,
["AfC_comment"] = 23000,
["AfC_date_category"] = 263000,
["AfC_status/age"] = 4500,
["AfC_status/backlog"] = 5100,
["AfC_submission"] = 44000,
["AfC_submission/comments"] = 30000,
["AfC_submission/declined"] = 30000,
["AfC_submission/draft"] = 13000,
["AfC_submission/helptools"] = 43000,
["AfC_submission/pending"] = 4500,
["AfC_submission/styles.css"] = 44000,
["AfC_submission/tools"] = 4500,
["AfC_submission_category_header"] = 6700,
["AfC_submission_category_header/day"] = 6400,
["AfC_submission_category_header/td"] = 6400,
["AfC_talk/C_percentage"] = 6300,
["AfC_topic"] = 30000,
["AfD_categories_horizontal_shortnames"] = 5300,
["AfD_count_link"] = 4100,
["Afd-merged-from"] = 11000,
["Afd_bottom/old"] = 412000,
["Afd_top/old"] = 412000,
["Afd_top/old/styles.css"] = 412000,
["Africa_topic"] = 6600,
["After_extra_time"] = 7000,
["Age"] = 29000,
["Age_in_days"] = 5600,
["Age_in_years"] = 4100,
["Age_in_years,_months,_weeks_and_days"] = 5300,
["Age_in_years,_months_and_days"] = 20000,
["Age_in_years_and_days"] = 5000,
["Age_in_years_and_days_nts"] = 4600,
["Agree"] = 2500,
["Ahnentafel"] = 7800,
["Ahnentafel/styles.css"] = 7800,
["Air_Force_Historical_Research_Agency"] = 4400,
["Air_force"] = 7500,
["Air_force/core"] = 7500,
["Aircontent"] = 9500,
["Aircraft_specs"] = 12000,
["Aircraft_specs/convert"] = 12000,
["Aircraft_specs/eng"] = 12000,
["Aircraft_specs/length"] = 12000,
["Aircraft_specs/range"] = 12000,
["Aircraft_specs/speed"] = 12000,
["Airport-dest-list"] = 3400,
["Airport_codes"] = 13000,
["Airport_destination_list"] = 4800,
["Aka"] = 2000,
["Al"] = 80000,
["Album"] = 3000,
["Album_chart"] = 36000,
["Album_cover_fur"] = 53000,
["Album_label_category"] = 2300,
["Album_label_category/core"] = 2300,
["Album_ratings"] = 30000,
["Album_reviews"] = 2400,
["Albums_category"] = 25000,
["Albums_category/core"] = 25000,
["Albums_category/type/default"] = 25000,
["Align"] = 205000,
["Aligned_table"] = 14000,
["AllIrelandByCountyCatNav"] = 3200,
["AllMusic"] = 77000,
["All_Ireland_by_county_category_navigation"] = 3200,
["All_plot"] = 2100,
["Allcaps"] = 11000,
["Allcaps/styles.css"] = 11000,
["Allmusic"] = 11000,
["Allow_wrap"] = 6500,
["Already_done"] = 2800,
["Also"] = 2400,
["Also_known_as"] = 2700,
["Alternating_rows_table"] = 2400,
["Alternating_rows_table/styles.css"] = 2400,
["Alumni"] = 3100,
["Always_substitute"] = 9100,
["Ambox"] = 1480000,
["Ambox_globe"] = 43000,
["Ambox_globe_current_red"] = 41000,
["American_English"] = 23000,
["American_football_roster/Footer"] = 3800,
["American_football_roster/Header"] = 3800,
["American_football_roster/Player"] = 3800,
["Americanfootballbox"] = 4600,
["Anarchism_announcements"] = 4000,
["Anarchism_announcements/shell"] = 4000,
["Anchor"] = 95000,
["Angbr"] = 2700,
["Angbr_IPA"] = 2400,
["Angle_bracket"] = 3900,
["Anglican_navbox_titlestyle"] = 14000,
["Anglicise_rank"] = 545000,
["Animal_tasks"] = 34000,
["Anime_News_Network"] = 12000,
["Anl"] = 2200,
["Annotated_link"] = 16000,
["Anonblock"] = 35000,
["Antonym_of_(dis)establish"] = 16000,
["Apostrophe"] = 97000,
["Arbitration_Committee_candidate/data"] = 108000,
["Archive"] = 341000,
["Archive_bottom"] = 68000,
["Archive_box"] = 18000,
["Archive_list"] = 96000,
["Archive_top"] = 48000,
["Archive_top/styles.css"] = 48000,
["Archive_top_green"] = 14000,
["Archive_top_green/styles.css"] = 14000,
["Archive_top_red"] = 6600,
["Archive_top_red/styles.css"] = 6600,
["Archivebottom"] = 3700,
["Archivebox"] = 2200,
["Archives"] = 55000,
["Archivetop"] = 3700,
["Army"] = 18000,
["Army/core"] = 18000,
["Art_UK_bio"] = 2500,
["Art_UK_bio/plural"] = 2500,
["Article"] = 3000,
["ArticleHistory"] = 27000,
["Article_alerts_box"] = 4100,
["Article_alerts_box/styles.css"] = 4100,
["Article_for_improvement_banner/Picture_box"] = 4500,
["Article_for_improvement_banner/Picture_box/show_picture"] = 4100,
["Article_history"] = 52000,
["Article_links"] = 513000,
["Article_links_2"] = 80000,
["Article_or_page"] = 6600,
["Article_stub_box"] = 2370000,
["Articles_by_Importance"] = 12000,
["Articles_by_Quality"] = 38000,
["Articles_for_creation_links"] = 6800,
["As_of"] = 92000,
["As_written"] = 2600,
["Asbox"] = 2350000,
["Asia_topic"] = 11000,
["Asof"] = 6300,
["Assessed-Class"] = 18000,
["Assignment"] = 6000,
["Assignment_milestones"] = 5300,
["Association_of_Tennis_Professionals"] = 5200,
["AstDys"] = 2800,
["Asterisk"] = 3500,
["Astro_list_redirect_comment"] = 2000,
["AthAbbr"] = 7300,
["Atnhead"] = 6000,
["Atop"] = 7200,
["Atopg"] = 13000,
["Atopr"] = 6200,
["Attached_KML"] = 14000,
["Au"] = 6000,
["AuEduNewbie"] = 2600,
["Audio"] = 41000,
["Audio_sample"] = 3100,
["AustralianFootball"] = 8900,
["Australian_Dictionary_of_Biography"] = 2300,
["Australian_English"] = 3700,
["Australian_Football_League_team"] = 2100,
["Australian_dollar"] = 2200,
["Australian_party_style"] = 6700,
["Australian_politics/name"] = 4700,
["Australian_politics/party_colours"] = 6900,
["Austria_metadata_Wikidata"] = 2100,
["Austria_population_Wikidata"] = 2100,
["Aut"] = 7800,
["Authority_control"] = 2280000,
["Authority_control_(arts)"] = 16000,
["Auto_link"] = 73000,
["Autobiography"] = 2100,
["Autolink"] = 41000,
["Automated_tools"] = 88000,
["Automated_tools/core"] = 88000,
["Automatic_archive_navigator"] = 42000,
["Automatic_archives_blurb"] = 19000,
["Automatic_category_TOC"] = 857000,
["Automatic_category_TOC/core"] = 856000,
["Automatic_taxobox"] = 104000,
["Automatically_generated"] = 2000,
["Aviation_Safety_Network_accident_history"] = 3300,
["Aviation_accidents_and_incidents"] = 2700,
["Avoid_wrap"] = 6100,
["Awaiting_admin"] = 2800,
["Awaitingadmin"] = 2700,
["Award2"] = 2600,
["Awards"] = 2600,
["Awards_table"] = 6200,
["Awards_table/styles.css"] = 6200,
["Ayd"] = 4500,
["Aye"] = 14000,
["Module:A_or_an"] = 12000,
["Module:A_or_an/words"] = 12000,
["Module:About"] = 169000,
["Module:Adjacent_stations"] = 80000,
["Module:Adjacent_stations/Amtrak"] = 2900,
["Module:Adjacent_stations/Deutsche_Bahn"] = 2100,
["Module:Adjacent_stations/Indian_Railways"] = 3500,
["Module:Adjacent_stations/JR_East"] = 2600,
["Module:Adjacent_stations/i18n"] = 80000,
["Module:Administrators'_noticeboard_archives"] = 2100,
["Module:Administrators'_noticeboard_archives/styles.css"] = 2100,
["Module:AfC_submission_catcheck"] = 343000,
["Module:AfC_topic"] = 30000,
["Module:Age"] = 1410000,
["Module:Ahnentafel"] = 7800,
["Module:Airport_destination_list"] = 4800,
["Module:Aligned_dates_list"] = 2700,
["Module:Aligned_table"] = 14000,
["Module:All_Ireland_by_county_category_navigation"] = 3400,
["Module:Anchor"] = 95000,
["Module:Ancient_Egypt_era"] = 2700,
["Module:Ancient_Egypt_era/data"] = 2700,
["Module:Ancient_Egypt_kings"] = 2700,
["Module:Ancient_Egypt_kings/data"] = 2700,
["Module:Ancient_Olympiads"] = 2700,
["Module:Ancient_Olympiads/data"] = 2700,
["Module:Annotated_link"] = 17000,
["Module:Archive"] = 341000,
["Module:Archive/config"] = 341000,
["Module:Archive_list"] = 98000,
["Module:Archives/bots"] = 34000,
["Module:Arguments"] = 37100000,
["Module:Armenian"] = 2700,
["Module:Arrowverse_redirect_category_handler"] = 2100,
["Module:Article_history"] = 52000,
["Module:Article_history/Category"] = 52000,
["Module:Article_history/config"] = 52000,
["Module:Article_history/styles.css"] = 52000,
["Module:Article_stub_box"] = 2370000,
["Module:Article_stub_box/styles.css"] = 2370000,
["Module:Articles_by_class"] = 50000,
["Module:Asbox_stubtree"] = 42000,
["Module:Attached_KML"] = 14000,
["Module:Attached_KML/styles.css"] = 14000,
["Module:Australian_place_map"] = 16000,
["Module:Authority_control"] = 2300000,
["Module:Authority_control/auxiliary"] = 712000,
["Module:Authority_control/config"] = 2300000,
["Module:Auto_date_formatter"] = 15000,
["Module:Automated_taxobox"] = 495000,
["Module:Autotaxobox"] = 646000,
}
pln1vcz6tv7xhfyzbfcmo8rs2jw9gp3
360853
360852
2026-05-18T04:58:18Z
ChiK
1136
೧ revisions imported from [[:en:Module:Transclusion_count/data/A]]
360852
Scribunto
text/plain
return {
["A-Class"] = 5500,
["A2r"] = 2000,
["ACArt"] = 3800,
["AFB_game_box_end"] = 2500,
["AFB_game_box_start"] = 2500,
["AFB_game_box_start/styles.css"] = 2500,
["AFC_comment"] = 23000,
["AFC_submission"] = 32000,
["AFC_submission_category_header"] = 4600,
["AFD_help"] = 166000,
["AFD_help/styles.css"] = 166000,
["AFI/Picture_box/show_picture"] = 4100,
["AFI_film"] = 9900,
["AFL"] = 2100,
["AFL_Car"] = 2700,
["AFL_Col"] = 2500,
["AFL_Ess"] = 2600,
["AFL_Gee"] = 2600,
["AFL_Haw"] = 2400,
["AFL_Mel"] = 2700,
["AFL_NM"] = 2200,
["AFL_Ric"] = 2500,
["AFL_StK"] = 2700,
["AFL_Tables"] = 12000,
["AFL_Year"] = 2800,
["AFL_player"] = 2100,
["AI-generated"] = 7200,
["ALG"] = 2600,
["AMARB"] = 4400,
["AM_station_data"] = 4400,
["ARBPIA"] = 3200,
["ARE"] = 2200,
["ARG"] = 6900,
["ARM"] = 2100,
["ASIN"] = 5000,
["ASN"] = 3300,
["ATP"] = 5200,
["AUS"] = 15000,
["AUT"] = 10000,
["AZE"] = 2900,
["A_note"] = 5800,
["A_or_an"] = 12000,
["Aan"] = 62000,
["Abbr"] = 967000,
["Abbreviation"] = 3000,
["Abbrlink"] = 16000,
["Abot"] = 29000,
["About"] = 169000,
["Absolute_page_title"] = 4600,
["Acad"] = 6700,
["Access_icon"] = 3300,
["According_to_whom"] = 4600,
["AchievementTable"] = 11000,
["AdSenseSummary"] = 12000,
["Added"] = 2800,
["Adjacent_communities"] = 29000,
["Adjacent_stations"] = 42000,
["Adjacent_stations/styles.css"] = 42000,
["Adjacent_stations_doc"] = 2400,
["Adjstn"] = 2700,
["Admin"] = 15000,
["Admin_help/helped"] = 2200,
["Administrator_note"] = 6900,
["Administrators'_noticeboard_archives_all"] = 2100,
["Administrators'_noticeboard_navbox_all"] = 2100,
["Adminnote"] = 3600,
["Advert"] = 9400,
["Aet"] = 6900,
["AfC_accept/C_percentage"] = 6300,
["AfC_age_category"] = 4500,
["AfC_comment"] = 23000,
["AfC_date_category"] = 263000,
["AfC_status/age"] = 4500,
["AfC_status/backlog"] = 5100,
["AfC_submission"] = 44000,
["AfC_submission/comments"] = 30000,
["AfC_submission/declined"] = 30000,
["AfC_submission/draft"] = 13000,
["AfC_submission/helptools"] = 43000,
["AfC_submission/pending"] = 4500,
["AfC_submission/styles.css"] = 44000,
["AfC_submission/tools"] = 4500,
["AfC_submission_category_header"] = 6700,
["AfC_submission_category_header/day"] = 6400,
["AfC_submission_category_header/td"] = 6400,
["AfC_talk/C_percentage"] = 6300,
["AfC_topic"] = 30000,
["AfD_categories_horizontal_shortnames"] = 5300,
["AfD_count_link"] = 4100,
["Afd-merged-from"] = 11000,
["Afd_bottom/old"] = 412000,
["Afd_top/old"] = 412000,
["Afd_top/old/styles.css"] = 412000,
["Africa_topic"] = 6600,
["After_extra_time"] = 7000,
["Age"] = 29000,
["Age_in_days"] = 5600,
["Age_in_years"] = 4100,
["Age_in_years,_months,_weeks_and_days"] = 5300,
["Age_in_years,_months_and_days"] = 20000,
["Age_in_years_and_days"] = 5000,
["Age_in_years_and_days_nts"] = 4600,
["Agree"] = 2500,
["Ahnentafel"] = 7800,
["Ahnentafel/styles.css"] = 7800,
["Air_Force_Historical_Research_Agency"] = 4400,
["Air_force"] = 7500,
["Air_force/core"] = 7500,
["Aircontent"] = 9500,
["Aircraft_specs"] = 12000,
["Aircraft_specs/convert"] = 12000,
["Aircraft_specs/eng"] = 12000,
["Aircraft_specs/length"] = 12000,
["Aircraft_specs/range"] = 12000,
["Aircraft_specs/speed"] = 12000,
["Airport-dest-list"] = 3400,
["Airport_codes"] = 13000,
["Airport_destination_list"] = 4800,
["Aka"] = 2000,
["Al"] = 80000,
["Album"] = 3000,
["Album_chart"] = 36000,
["Album_cover_fur"] = 53000,
["Album_label_category"] = 2300,
["Album_label_category/core"] = 2300,
["Album_ratings"] = 30000,
["Album_reviews"] = 2400,
["Albums_category"] = 25000,
["Albums_category/core"] = 25000,
["Albums_category/type/default"] = 25000,
["Align"] = 205000,
["Aligned_table"] = 14000,
["AllIrelandByCountyCatNav"] = 3200,
["AllMusic"] = 77000,
["All_Ireland_by_county_category_navigation"] = 3200,
["All_plot"] = 2100,
["Allcaps"] = 11000,
["Allcaps/styles.css"] = 11000,
["Allmusic"] = 11000,
["Allow_wrap"] = 6500,
["Already_done"] = 2800,
["Also"] = 2400,
["Also_known_as"] = 2700,
["Alternating_rows_table"] = 2400,
["Alternating_rows_table/styles.css"] = 2400,
["Alumni"] = 3100,
["Always_substitute"] = 9100,
["Ambox"] = 1480000,
["Ambox_globe"] = 43000,
["Ambox_globe_current_red"] = 41000,
["American_English"] = 23000,
["American_football_roster/Footer"] = 3800,
["American_football_roster/Header"] = 3800,
["American_football_roster/Player"] = 3800,
["Americanfootballbox"] = 4600,
["Anarchism_announcements"] = 4000,
["Anarchism_announcements/shell"] = 4000,
["Anchor"] = 95000,
["Angbr"] = 2700,
["Angbr_IPA"] = 2400,
["Angle_bracket"] = 3900,
["Anglican_navbox_titlestyle"] = 14000,
["Anglicise_rank"] = 545000,
["Animal_tasks"] = 34000,
["Anime_News_Network"] = 12000,
["Anl"] = 2200,
["Annotated_link"] = 16000,
["Anonblock"] = 35000,
["Antonym_of_(dis)establish"] = 16000,
["Apostrophe"] = 97000,
["Arbitration_Committee_candidate/data"] = 108000,
["Archive"] = 341000,
["Archive_bottom"] = 68000,
["Archive_box"] = 18000,
["Archive_list"] = 96000,
["Archive_top"] = 48000,
["Archive_top/styles.css"] = 48000,
["Archive_top_green"] = 14000,
["Archive_top_green/styles.css"] = 14000,
["Archive_top_red"] = 6600,
["Archive_top_red/styles.css"] = 6600,
["Archivebottom"] = 3700,
["Archivebox"] = 2200,
["Archives"] = 55000,
["Archivetop"] = 3700,
["Army"] = 18000,
["Army/core"] = 18000,
["Art_UK_bio"] = 2500,
["Art_UK_bio/plural"] = 2500,
["Article"] = 3000,
["ArticleHistory"] = 27000,
["Article_alerts_box"] = 4100,
["Article_alerts_box/styles.css"] = 4100,
["Article_for_improvement_banner/Picture_box"] = 4500,
["Article_for_improvement_banner/Picture_box/show_picture"] = 4100,
["Article_history"] = 52000,
["Article_links"] = 513000,
["Article_links_2"] = 80000,
["Article_or_page"] = 6600,
["Article_stub_box"] = 2370000,
["Articles_by_Importance"] = 12000,
["Articles_by_Quality"] = 38000,
["Articles_for_creation_links"] = 6800,
["As_of"] = 92000,
["As_written"] = 2600,
["Asbox"] = 2350000,
["Asia_topic"] = 11000,
["Asof"] = 6300,
["Assessed-Class"] = 18000,
["Assignment"] = 6000,
["Assignment_milestones"] = 5300,
["Association_of_Tennis_Professionals"] = 5200,
["AstDys"] = 2800,
["Asterisk"] = 3500,
["Astro_list_redirect_comment"] = 2000,
["AthAbbr"] = 7300,
["Atnhead"] = 6000,
["Atop"] = 7200,
["Atopg"] = 13000,
["Atopr"] = 6200,
["Attached_KML"] = 14000,
["Au"] = 6000,
["AuEduNewbie"] = 2600,
["Audio"] = 41000,
["Audio_sample"] = 3100,
["AustralianFootball"] = 8900,
["Australian_Dictionary_of_Biography"] = 2300,
["Australian_English"] = 3700,
["Australian_Football_League_team"] = 2100,
["Australian_dollar"] = 2200,
["Australian_party_style"] = 6700,
["Australian_politics/name"] = 4700,
["Australian_politics/party_colours"] = 6900,
["Austria_metadata_Wikidata"] = 2100,
["Austria_population_Wikidata"] = 2100,
["Aut"] = 7800,
["Authority_control"] = 2280000,
["Authority_control_(arts)"] = 16000,
["Auto_link"] = 73000,
["Autobiography"] = 2100,
["Autolink"] = 41000,
["Automated_tools"] = 88000,
["Automated_tools/core"] = 88000,
["Automatic_archive_navigator"] = 42000,
["Automatic_archives_blurb"] = 19000,
["Automatic_category_TOC"] = 857000,
["Automatic_category_TOC/core"] = 856000,
["Automatic_taxobox"] = 104000,
["Automatically_generated"] = 2000,
["Aviation_Safety_Network_accident_history"] = 3300,
["Aviation_accidents_and_incidents"] = 2700,
["Avoid_wrap"] = 6100,
["Awaiting_admin"] = 2800,
["Awaitingadmin"] = 2700,
["Award2"] = 2600,
["Awards"] = 2600,
["Awards_table"] = 6200,
["Awards_table/styles.css"] = 6200,
["Ayd"] = 4500,
["Aye"] = 14000,
["Module:A_or_an"] = 12000,
["Module:A_or_an/words"] = 12000,
["Module:About"] = 169000,
["Module:Adjacent_stations"] = 80000,
["Module:Adjacent_stations/Amtrak"] = 2900,
["Module:Adjacent_stations/Deutsche_Bahn"] = 2100,
["Module:Adjacent_stations/Indian_Railways"] = 3500,
["Module:Adjacent_stations/JR_East"] = 2600,
["Module:Adjacent_stations/i18n"] = 80000,
["Module:Administrators'_noticeboard_archives"] = 2100,
["Module:Administrators'_noticeboard_archives/styles.css"] = 2100,
["Module:AfC_submission_catcheck"] = 343000,
["Module:AfC_topic"] = 30000,
["Module:Age"] = 1410000,
["Module:Ahnentafel"] = 7800,
["Module:Airport_destination_list"] = 4800,
["Module:Aligned_dates_list"] = 2700,
["Module:Aligned_table"] = 14000,
["Module:All_Ireland_by_county_category_navigation"] = 3400,
["Module:Anchor"] = 95000,
["Module:Ancient_Egypt_era"] = 2700,
["Module:Ancient_Egypt_era/data"] = 2700,
["Module:Ancient_Egypt_kings"] = 2700,
["Module:Ancient_Egypt_kings/data"] = 2700,
["Module:Ancient_Olympiads"] = 2700,
["Module:Ancient_Olympiads/data"] = 2700,
["Module:Annotated_link"] = 17000,
["Module:Archive"] = 341000,
["Module:Archive/config"] = 341000,
["Module:Archive_list"] = 98000,
["Module:Archives/bots"] = 34000,
["Module:Arguments"] = 37100000,
["Module:Armenian"] = 2700,
["Module:Arrowverse_redirect_category_handler"] = 2100,
["Module:Article_history"] = 52000,
["Module:Article_history/Category"] = 52000,
["Module:Article_history/config"] = 52000,
["Module:Article_history/styles.css"] = 52000,
["Module:Article_stub_box"] = 2370000,
["Module:Article_stub_box/styles.css"] = 2370000,
["Module:Articles_by_class"] = 50000,
["Module:Asbox_stubtree"] = 42000,
["Module:Attached_KML"] = 14000,
["Module:Attached_KML/styles.css"] = 14000,
["Module:Australian_place_map"] = 16000,
["Module:Authority_control"] = 2300000,
["Module:Authority_control/auxiliary"] = 712000,
["Module:Authority_control/config"] = 2300000,
["Module:Auto_date_formatter"] = 15000,
["Module:Automated_taxobox"] = 495000,
["Module:Autotaxobox"] = 646000,
}
pln1vcz6tv7xhfyzbfcmo8rs2jw9gp3
ಮೋಡ್ಯೂಲ್:Transclusion count/data/R
828
10411
360842
360087
2026-05-17T05:12:18Z
en>Ahechtbot
0
[[Wikipedia:BOT|Bot]]: Updated page.
360842
Scribunto
text/plain
return {
["R"] = 35000,
["R/ref"] = 35000,
["R/superscript"] = 109000,
["R/where"] = 109000,
["RA"] = 11000,
["RCS"] = 4400,
["REVISIONUSER2"] = 68000,
["RMS"] = 6400,
["RMnac"] = 3200,
["ROM"] = 2700,
["ROU"] = 7600,
["RSA"] = 5100,
["RSS-Atom_feed_notice"] = 222000,
["RTGS"] = 2400,
["RT_data"] = 4100,
["RUS"] = 15000,
["R_alt"] = 2800,
["R_ambig"] = 16000,
["R_avoided_double_redirect"] = 196000,
["R_cat_shell"] = 12000,
["R_category_shell"] = 13000,
["R_from_ASCII-only"] = 229000,
["R_from_ATC_code"] = 4700,
["R_from_ATCvet_code"] = 5400,
["R_from_British_English"] = 2500,
["R_from_DOI_prefix"] = 7600,
["R_from_IMO_number"] = 4400,
["R_from_ISO_4"] = 42000,
["R_from_ISO_4_abbreviation"] = 47000,
["R_from_ISO_639"] = 8900,
["R_from_ISO_639_code"] = 9000,
["R_from_NLM"] = 4600,
["R_from_NLM_abbreviation"] = 4700,
["R_from_UK_road"] = 3000,
["R_from_UN/LOCODE"] = 7100,
["R_from_US_postal_abbreviation"] = 43000,
["R_from_Unicode"] = 28000,
["R_from_Unicode_character"] = 32000,
["R_from_abbreviation"] = 26000,
["R_from_acronym"] = 2900,
["R_from_adjective"] = 7700,
["R_from_airport_code"] = 6900,
["R_from_album"] = 18000,
["R_from_alt_name"] = 4800,
["R_from_alternate_name"] = 20000,
["R_from_alternate_spelling"] = 7200,
["R_from_alternative_capitalisation"] = 9000,
["R_from_alternative_capitalization"] = 4600,
["R_from_alternative_disambiguation"] = 6300,
["R_from_alternative_hyphenation"] = 309000,
["R_from_alternative_language"] = 89000,
["R_from_alternative_name"] = 293000,
["R_from_alternative_punctuation"] = 33000,
["R_from_alternative_scientific_name"] = 158000,
["R_from_alternative_spacing"] = 15000,
["R_from_alternative_spelling"] = 78000,
["R_from_alternative_title"] = 10000,
["R_from_alternative_transliteration"] = 7100,
["R_from_ambiguous"] = 2900,
["R_from_ambiguous_page"] = 7800,
["R_from_ambiguous_sort_name"] = 40000,
["R_from_ambiguous_term"] = 51000,
["R_from_avoided_double_redirect"] = 7300,
["R_from_birth_name"] = 13000,
["R_from_book"] = 5100,
["R_from_case_citation"] = 3200,
["R_from_category_navigation"] = 4500,
["R_from_chemical_formula"] = 9200,
["R_from_comment_subpage"] = 22000,
["R_from_diacritic"] = 10000,
["R_from_diacritics"] = 2100,
["R_from_domain_name"] = 13000,
["R_from_draft"] = 3900,
["R_from_draft_namespace"] = 5700,
["R_from_drug_trade_name"] = 23000,
["R_from_emoji"] = 3300,
["R_from_fictional_character"] = 56000,
["R_from_fictional_element"] = 5400,
["R_from_fictional_location"] = 2300,
["R_from_former_name"] = 32000,
["R_from_full_name"] = 13000,
["R_from_gene_symbol"] = 10000,
["R_from_given_name"] = 3100,
["R_from_incomplete_disambiguation"] = 60000,
["R_from_incomplete_name"] = 2500,
["R_from_incorrect_disambiguation"] = 5600,
["R_from_incorrect_name"] = 13000,
["R_from_initialism"] = 24000,
["R_from_legislation"] = 3200,
["R_from_less_specific_name"] = 4900,
["R_from_list_topic"] = 9700,
["R_from_long"] = 6300,
["R_from_long_name"] = 102000,
["R_from_longer_name"] = 17000,
["R_from_member"] = 6500,
["R_from_merge"] = 76000,
["R_from_miscapitalisation"] = 40000,
["R_from_miscapitalization"] = 5800,
["R_from_misspelling"] = 67000,
["R_from_modification"] = 461000,
["R_from_molecular_formula"] = 6800,
["R_from_monotypic_taxon"] = 8000,
["R_from_more_specific_geographic_name"] = 2800,
["R_from_more_specific_name"] = 5700,
["R_from_move"] = 3000000,
["R_from_move/except"] = 3000000,
["R_from_name_with_title"] = 6100,
["R_from_nickname"] = 3100,
["R_from_old_AfC_draft"] = 29000,
["R_from_other_capitalisation"] = 417000,
["R_from_other_capitalization"] = 6100,
["R_from_other_disambiguation"] = 20000,
["R_from_other_language"] = 2800,
["R_from_other_name"] = 7900,
["R_from_other_punctuation"] = 2000,
["R_from_other_spelling"] = 2700,
["R_from_person"] = 13000,
["R_from_personal_name"] = 2600,
["R_from_plural"] = 38000,
["R_from_product_name"] = 2400,
["R_from_pseudonym"] = 2800,
["R_from_railroad_name_with_ampersand"] = 2300,
["R_from_related_term"] = 2100,
["R_from_related_topic"] = 7000,
["R_from_related_word"] = 17000,
["R_from_remote_page"] = 12000,
["R_from_remote_talk_page"] = 30000,
["R_from_school"] = 3500,
["R_from_scientific_name"] = 35000,
["R_from_short"] = 4800,
["R_from_short_name"] = 115000,
["R_from_shortcut"] = 45000,
["R_from_shorter_name"] = 2400,
["R_from_shorter_title"] = 5100,
["R_from_song"] = 59000,
["R_from_sort_name"] = 182000,
["R_from_species_to_genus"] = 4600,
["R_from_subpage"] = 41000,
["R_from_subtopic"] = 79000,
["R_from_surname"] = 32000,
["R_from_symbol"] = 3100,
["R_from_synonym"] = 6300,
["R_from_taxonomic_synonym"] = 2500,
["R_from_television_episode"] = 62000,
["R_from_template_shortcut"] = 4700,
["R_from_title_with_diacritics"] = 5800,
["R_from_title_without_diacritics"] = 393000,
["R_from_trade_name"] = 23000,
["R_from_typo"] = 4000,
["R_from_unnecessary_disambiguation"] = 47000,
["R_from_work"] = 2600,
["R_from_year"] = 4100,
["R_hatnote"] = 2900,
["R_mentioned_in_hatnote"] = 11000,
["R_miscap"] = 2600,
["R_move"] = 2300,
["R_printworthy"] = 90000,
["R_protected"] = 10000,
["R_protected/excon"] = 2400,
["R_protected/semi"] = 6200,
["R_sect"] = 3500,
["R_section"] = 13000,
["R_shell"] = 20000,
["R_to_Swiss_municipality_(,_Switzerland)"] = 2300,
["R_to_Swiss_municipality_(canton)"] = 3500,
["R_to_Swiss_municipality_2L"] = 2600,
["R_to_TV_episode_list_entry"] = 8900,
["R_to_alternative_scientific_name"] = 3000,
["R_to_anchor"] = 109000,
["R_to_category_namespace"] = 6500,
["R_to_century"] = 2700,
["R_to_diacritic"] = 421000,
["R_to_diacritics"] = 3800,
["R_to_disambiguation"] = 4000,
["R_to_disambiguation_page"] = 288000,
["R_to_list"] = 39000,
["R_to_list_entry"] = 93000,
["R_to_monotypic_taxon"] = 17000,
["R_to_plural"] = 4600,
["R_to_project"] = 2600,
["R_to_project_namespace"] = 24000,
["R_to_redirect_template"] = 3300,
["R_to_related_topic"] = 93000,
["R_to_scientific_name"] = 104000,
["R_to_section"] = 409000,
["R_to_short_name"] = 4400,
["R_to_stub_template"] = 4300,
["R_to_subpage"] = 7900,
["R_to_subtopic"] = 4200,
["R_to_transliteration"] = 15000,
["R_unprintworthy"] = 97000,
["R_with_Wikidata_item"] = 46000,
["R_with_history"] = 20000,
["R_with_possibilities"] = 123000,
["Racing-Reference_driver"] = 2800,
["Radio_Relay"] = 3400,
["Radio_formats"] = 11000,
["Rail-interchange"] = 42000,
["RailGauge"] = 10000,
["Rail_color"] = 38000,
["Rail_color_box"] = 15000,
["Rail_icon"] = 22000,
["Rail_line"] = 9800,
["Rail_navbox_titlestyle"] = 14000,
["Rail_pass_box"] = 17000,
["Rail_start"] = 2100,
["Rail_template_doc"] = 2300,
["Railway-routemap"] = 4600,
["Railway_division_link"] = 4700,
["Railway_stations_in_countryname_opened_in_YYYY_category_header"] = 3100,
["Railway_stations_in_countryname_opened_or_closed_in_YYYY_category_header"] = 5300,
["Railway_stations_in_countryname_opened_or_closed_in_YYYY_category_header/core"] = 5300,
["Rand"] = 5300,
["Random_number"] = 5600,
["Random_page_in_category"] = 5600,
["Random_subpage"] = 7700,
["Ranking_movements"] = 4700,
["Rating"] = 104000,
["Rating-Christgau"] = 2700,
["Rayment"] = 2100,
["Rayment-hc"] = 6400,
["Razavi_Khorasan_Province"] = 2500,
["Rbox"] = 2200,
["Rcat_shell"] = 259000,
["Rcatsh"] = 9800,
["Rcatshell"] = 5200,
["Rcb"] = 10000,
["Rcr"] = 30000,
["Rcs"] = 3900,
["Re"] = 88000,
["Recent_AfDs"] = 5300,
["Recent_AfDs/core"] = 5300,
["Red"] = 54000,
["Redacted"] = 3200,
["Redirect"] = 61000,
["Redirect-Class"] = 13000,
["Redirect-distinguish"] = 5000,
["Redirect_category"] = 4900,
["Redirect_category_shell"] = 4010000,
["Redirect_from_modification"] = 3200,
["Redirect_from_move"] = 3700,
["Redirect_italic_title"] = 2100,
["Redirect_shell"] = 323000,
["Redirect_template"] = 7720000,
["Redirect_to_section"] = 3700,
["Redr"] = 9300,
["Ref"] = 24000,
["Ref_heading"] = 2400,
["Ref_improve"] = 2400,
["Ref_label"] = 13000,
["Refbegin"] = 223000,
["Refbegin/styles.css"] = 223000,
["Refend"] = 222000,
["Reference_column_heading"] = 10000,
["Reference_page"] = 77000,
["Refh"] = 4400,
["Refideas"] = 29000,
["Refimprove"] = 76000,
["Reflist"] = 6500000,
["Reflist-talk"] = 107000,
["Reflist-talk/styles.css"] = 108000,
["Reflist/styles.css"] = 6500000,
["Reflist_talk"] = 7800,
["Refn"] = 42000,
["Reftalk"] = 9200,
["Region_history_sidebar_title"] = 5900,
["Registration_required"] = 8000,
["Reign"] = 5600,
["Related_molecular_formulas"] = 2300,
["ReleaseVersionParameters"] = 2100,
["Release_version_parameters"] = 2100,
["Reliable_sources_for_medical_articles"] = 14000,
["Remove_accents"] = 9000,
["Remove_file_prefix"] = 2200,
["Remove_first_word"] = 190000,
["Remove_last_word"] = 21000,
["Repeat_vandal"] = 2700,
["Repeated_IP_abuse"] = 5200,
["Repeatvandal"] = 2200,
["Replace"] = 1520000,
["Reply"] = 23000,
["Reply_to"] = 365000,
["Replyto"] = 19000,
["Republican_Party_(US)/meta/shading"] = 18000,
["Reqmapin"] = 2600,
["Reqphoto"] = 73000,
["Request_and_endorse"] = 2200,
["Request_edit_button"] = 12000,
["Request_edit_button/styles.css"] = 12000,
["Requestandendorse"] = 2100,
["Resbox"] = 3300,
["Resize"] = 149000,
["Resizediv"] = 14000,
["Resolve_category_redirect"] = 1350000,
["Resolved"] = 18000,
["Respell"] = 23000,
["Respond"] = 73000,
["Resume-like"] = 4300,
["Retired"] = 11000,
["Retrieved"] = 3200,
["Reverse_date"] = 54000,
["Reviewer_topicon"] = 2700,
["RfA_watchlist_notice"] = 7100,
["Rfd_log_header"] = 7200,
["Ribbon_devices"] = 5200,
["Ribbon_devices/alt"] = 5200,
["Ribbon_devices/device"] = 4100,
["Ribbon_devices/device_layout"] = 4100,
["Ric"] = 17000,
["Right"] = 6800,
["Right_ascension"] = 11000,
["Rint"] = 30000,
["Rlp"] = 11000,
["Rlp/Positions"] = 11000,
["Rmri"] = 3900,
["Rnd"] = 8400,
["Rollback_topicon"] = 3300,
["Roman"] = 3200,
["Romania_metadata_Wikidata"] = 3200,
["RomanianSoccer"] = 2400,
["Rotten-tomatoes"] = 9200,
["Rotten_Tomatoes"] = 26000,
["Rotten_Tomatoes_data"] = 6400,
["Rotten_Tomatoes_prose"] = 6500,
["Round"] = 61000,
["Round4-with_third"] = 3500,
["Round_corners"] = 9600,
["Rounddown"] = 3000,
["RouteBox"] = 9600,
["Routemap"] = 30000,
["Routemap/embeded_text"] = 9300,
["Routemap/if_empty_codes"] = 5000,
["Routemap/styles.css"] = 30000,
["RoutemapRouteIcon"] = 4000,
["Row_hover_highlight"] = 2800,
["Row_hover_highlight/styles.css"] = 2800,
["Royal_Australian_Navy_ship"] = 6700,
["Royal_Canadian_Navy_ship"] = 5300,
["Royal_Mail_ship"] = 6400,
["Royal_Netherlands_Navy_ship"] = 3300,
["Rp"] = 74000,
["Rshell"] = 10000,
["Rtl-para"] = 2100,
["Rto"] = 3500,
["Ru"] = 3700,
["Ru-census"] = 7500,
["Ru-census2002"] = 5700,
["Ru-census2010"] = 7500,
["Ru-pop-ref"] = 9900,
["Ruby/styles.css"] = 2100,
["Rugby_box"] = 3500,
["Rugby_league_positions"] = 11000,
["Rugby_league_positions/Positions"] = 11000,
["Rugby_league_squad2_coach"] = 2800,
["Rugby_union_team"] = 5300,
["Rugby_union_team/link"] = 5300,
["Rugbybox"] = 3500,
["RussiaAdmMunRef"] = 5800,
["Russia_Time_Zone_Wikidata"] = 6700,
["Russia_Time_Zone_Wikidata/getQID"] = 6500,
["Russia_by_federal_subject_category_navigation"] = 3000,
["Rut"] = 5300,
["Rwd"] = 4700,
["Rws"] = 27000,
["Module:R_avoided_double_redirect"] = 196000,
["Module:Rail-interchange_multi"] = 15000,
["Module:Random"] = 13000,
["Module:Ranking_movements"] = 4700,
["Module:Ranking_movements/styles.css"] = 4700,
["Module:Redirect"] = 5180000,
["Module:Redirect-distinguish"] = 5000,
["Module:RedirectData"] = 46000,
["Module:Redirect_hatnote"] = 63000,
["Module:Redirect_template"] = 7720000,
["Module:Redirect_template_handler"] = 28000,
["Module:Reply_to"] = 365000,
["Module:ResolveEntityId"] = 498000,
["Module:Resolve_category_redirect"] = 1720000,
["Module:Respell"] = 23000,
["Module:Rivals.com_recruit_url"] = 2500,
["Module:Road_data"] = 18000,
["Module:Road_data/RJL_types"] = 16000,
["Module:Road_data/banners/USA"] = 9400,
["Module:Road_data/browse"] = 18000,
["Module:Road_data/browsetable"] = 18000,
["Module:Road_data/browsetable/styles.css"] = 18000,
["Module:Road_data/countrymask"] = 35000,
["Module:Road_data/extra"] = 32000,
["Module:Road_data/locations"] = 12000,
["Module:Road_data/parser"] = 42000,
["Module:Road_data/parser/hooks"] = 20000,
["Module:Road_data/parser/namespace"] = 4000,
["Module:Road_data/size"] = 18000,
["Module:Road_data/strings/ASIA"] = 9000,
["Module:Road_data/strings/CAN"] = 5000,
["Module:Road_data/strings/EUR"] = 5800,
["Module:Road_data/strings/IND"] = 2300,
["Module:Road_data/strings/JPN"] = 3500,
["Module:Road_data/strings/USA"] = 21000,
["Module:Road_data/strings/USA/regional/GRR"] = 21000,
["Module:Road_data/strings/USA/regional/NER"] = 21000,
["Module:Road_data/strings/USA/regional/Tour"] = 21000,
["Module:Road_data/strings/USA/regional/Trails"] = 21000,
["Module:Road_data/util"] = 43000,
["Module:Roman"] = 6100,
["Module:Rotten_Tomatoes_data"] = 6400,
["Module:RoundN"] = 13000,
["Module:Routemap"] = 30000,
["Module:Rugby_box"] = 3600,
["Module:Russia_by_federal_subject_category_navigation"] = 3000,
}
pmyzc6kkd0rfmfanwqd7yz7teogialc
360843
360842
2026-05-18T04:30:10Z
ChiK
1136
೧ revisions imported from [[:en:Module:Transclusion_count/data/R]]
360842
Scribunto
text/plain
return {
["R"] = 35000,
["R/ref"] = 35000,
["R/superscript"] = 109000,
["R/where"] = 109000,
["RA"] = 11000,
["RCS"] = 4400,
["REVISIONUSER2"] = 68000,
["RMS"] = 6400,
["RMnac"] = 3200,
["ROM"] = 2700,
["ROU"] = 7600,
["RSA"] = 5100,
["RSS-Atom_feed_notice"] = 222000,
["RTGS"] = 2400,
["RT_data"] = 4100,
["RUS"] = 15000,
["R_alt"] = 2800,
["R_ambig"] = 16000,
["R_avoided_double_redirect"] = 196000,
["R_cat_shell"] = 12000,
["R_category_shell"] = 13000,
["R_from_ASCII-only"] = 229000,
["R_from_ATC_code"] = 4700,
["R_from_ATCvet_code"] = 5400,
["R_from_British_English"] = 2500,
["R_from_DOI_prefix"] = 7600,
["R_from_IMO_number"] = 4400,
["R_from_ISO_4"] = 42000,
["R_from_ISO_4_abbreviation"] = 47000,
["R_from_ISO_639"] = 8900,
["R_from_ISO_639_code"] = 9000,
["R_from_NLM"] = 4600,
["R_from_NLM_abbreviation"] = 4700,
["R_from_UK_road"] = 3000,
["R_from_UN/LOCODE"] = 7100,
["R_from_US_postal_abbreviation"] = 43000,
["R_from_Unicode"] = 28000,
["R_from_Unicode_character"] = 32000,
["R_from_abbreviation"] = 26000,
["R_from_acronym"] = 2900,
["R_from_adjective"] = 7700,
["R_from_airport_code"] = 6900,
["R_from_album"] = 18000,
["R_from_alt_name"] = 4800,
["R_from_alternate_name"] = 20000,
["R_from_alternate_spelling"] = 7200,
["R_from_alternative_capitalisation"] = 9000,
["R_from_alternative_capitalization"] = 4600,
["R_from_alternative_disambiguation"] = 6300,
["R_from_alternative_hyphenation"] = 309000,
["R_from_alternative_language"] = 89000,
["R_from_alternative_name"] = 293000,
["R_from_alternative_punctuation"] = 33000,
["R_from_alternative_scientific_name"] = 158000,
["R_from_alternative_spacing"] = 15000,
["R_from_alternative_spelling"] = 78000,
["R_from_alternative_title"] = 10000,
["R_from_alternative_transliteration"] = 7100,
["R_from_ambiguous"] = 2900,
["R_from_ambiguous_page"] = 7800,
["R_from_ambiguous_sort_name"] = 40000,
["R_from_ambiguous_term"] = 51000,
["R_from_avoided_double_redirect"] = 7300,
["R_from_birth_name"] = 13000,
["R_from_book"] = 5100,
["R_from_case_citation"] = 3200,
["R_from_category_navigation"] = 4500,
["R_from_chemical_formula"] = 9200,
["R_from_comment_subpage"] = 22000,
["R_from_diacritic"] = 10000,
["R_from_diacritics"] = 2100,
["R_from_domain_name"] = 13000,
["R_from_draft"] = 3900,
["R_from_draft_namespace"] = 5700,
["R_from_drug_trade_name"] = 23000,
["R_from_emoji"] = 3300,
["R_from_fictional_character"] = 56000,
["R_from_fictional_element"] = 5400,
["R_from_fictional_location"] = 2300,
["R_from_former_name"] = 32000,
["R_from_full_name"] = 13000,
["R_from_gene_symbol"] = 10000,
["R_from_given_name"] = 3100,
["R_from_incomplete_disambiguation"] = 60000,
["R_from_incomplete_name"] = 2500,
["R_from_incorrect_disambiguation"] = 5600,
["R_from_incorrect_name"] = 13000,
["R_from_initialism"] = 24000,
["R_from_legislation"] = 3200,
["R_from_less_specific_name"] = 4900,
["R_from_list_topic"] = 9700,
["R_from_long"] = 6300,
["R_from_long_name"] = 102000,
["R_from_longer_name"] = 17000,
["R_from_member"] = 6500,
["R_from_merge"] = 76000,
["R_from_miscapitalisation"] = 40000,
["R_from_miscapitalization"] = 5800,
["R_from_misspelling"] = 67000,
["R_from_modification"] = 461000,
["R_from_molecular_formula"] = 6800,
["R_from_monotypic_taxon"] = 8000,
["R_from_more_specific_geographic_name"] = 2800,
["R_from_more_specific_name"] = 5700,
["R_from_move"] = 3000000,
["R_from_move/except"] = 3000000,
["R_from_name_with_title"] = 6100,
["R_from_nickname"] = 3100,
["R_from_old_AfC_draft"] = 29000,
["R_from_other_capitalisation"] = 417000,
["R_from_other_capitalization"] = 6100,
["R_from_other_disambiguation"] = 20000,
["R_from_other_language"] = 2800,
["R_from_other_name"] = 7900,
["R_from_other_punctuation"] = 2000,
["R_from_other_spelling"] = 2700,
["R_from_person"] = 13000,
["R_from_personal_name"] = 2600,
["R_from_plural"] = 38000,
["R_from_product_name"] = 2400,
["R_from_pseudonym"] = 2800,
["R_from_railroad_name_with_ampersand"] = 2300,
["R_from_related_term"] = 2100,
["R_from_related_topic"] = 7000,
["R_from_related_word"] = 17000,
["R_from_remote_page"] = 12000,
["R_from_remote_talk_page"] = 30000,
["R_from_school"] = 3500,
["R_from_scientific_name"] = 35000,
["R_from_short"] = 4800,
["R_from_short_name"] = 115000,
["R_from_shortcut"] = 45000,
["R_from_shorter_name"] = 2400,
["R_from_shorter_title"] = 5100,
["R_from_song"] = 59000,
["R_from_sort_name"] = 182000,
["R_from_species_to_genus"] = 4600,
["R_from_subpage"] = 41000,
["R_from_subtopic"] = 79000,
["R_from_surname"] = 32000,
["R_from_symbol"] = 3100,
["R_from_synonym"] = 6300,
["R_from_taxonomic_synonym"] = 2500,
["R_from_television_episode"] = 62000,
["R_from_template_shortcut"] = 4700,
["R_from_title_with_diacritics"] = 5800,
["R_from_title_without_diacritics"] = 393000,
["R_from_trade_name"] = 23000,
["R_from_typo"] = 4000,
["R_from_unnecessary_disambiguation"] = 47000,
["R_from_work"] = 2600,
["R_from_year"] = 4100,
["R_hatnote"] = 2900,
["R_mentioned_in_hatnote"] = 11000,
["R_miscap"] = 2600,
["R_move"] = 2300,
["R_printworthy"] = 90000,
["R_protected"] = 10000,
["R_protected/excon"] = 2400,
["R_protected/semi"] = 6200,
["R_sect"] = 3500,
["R_section"] = 13000,
["R_shell"] = 20000,
["R_to_Swiss_municipality_(,_Switzerland)"] = 2300,
["R_to_Swiss_municipality_(canton)"] = 3500,
["R_to_Swiss_municipality_2L"] = 2600,
["R_to_TV_episode_list_entry"] = 8900,
["R_to_alternative_scientific_name"] = 3000,
["R_to_anchor"] = 109000,
["R_to_category_namespace"] = 6500,
["R_to_century"] = 2700,
["R_to_diacritic"] = 421000,
["R_to_diacritics"] = 3800,
["R_to_disambiguation"] = 4000,
["R_to_disambiguation_page"] = 288000,
["R_to_list"] = 39000,
["R_to_list_entry"] = 93000,
["R_to_monotypic_taxon"] = 17000,
["R_to_plural"] = 4600,
["R_to_project"] = 2600,
["R_to_project_namespace"] = 24000,
["R_to_redirect_template"] = 3300,
["R_to_related_topic"] = 93000,
["R_to_scientific_name"] = 104000,
["R_to_section"] = 409000,
["R_to_short_name"] = 4400,
["R_to_stub_template"] = 4300,
["R_to_subpage"] = 7900,
["R_to_subtopic"] = 4200,
["R_to_transliteration"] = 15000,
["R_unprintworthy"] = 97000,
["R_with_Wikidata_item"] = 46000,
["R_with_history"] = 20000,
["R_with_possibilities"] = 123000,
["Racing-Reference_driver"] = 2800,
["Radio_Relay"] = 3400,
["Radio_formats"] = 11000,
["Rail-interchange"] = 42000,
["RailGauge"] = 10000,
["Rail_color"] = 38000,
["Rail_color_box"] = 15000,
["Rail_icon"] = 22000,
["Rail_line"] = 9800,
["Rail_navbox_titlestyle"] = 14000,
["Rail_pass_box"] = 17000,
["Rail_start"] = 2100,
["Rail_template_doc"] = 2300,
["Railway-routemap"] = 4600,
["Railway_division_link"] = 4700,
["Railway_stations_in_countryname_opened_in_YYYY_category_header"] = 3100,
["Railway_stations_in_countryname_opened_or_closed_in_YYYY_category_header"] = 5300,
["Railway_stations_in_countryname_opened_or_closed_in_YYYY_category_header/core"] = 5300,
["Rand"] = 5300,
["Random_number"] = 5600,
["Random_page_in_category"] = 5600,
["Random_subpage"] = 7700,
["Ranking_movements"] = 4700,
["Rating"] = 104000,
["Rating-Christgau"] = 2700,
["Rayment"] = 2100,
["Rayment-hc"] = 6400,
["Razavi_Khorasan_Province"] = 2500,
["Rbox"] = 2200,
["Rcat_shell"] = 259000,
["Rcatsh"] = 9800,
["Rcatshell"] = 5200,
["Rcb"] = 10000,
["Rcr"] = 30000,
["Rcs"] = 3900,
["Re"] = 88000,
["Recent_AfDs"] = 5300,
["Recent_AfDs/core"] = 5300,
["Red"] = 54000,
["Redacted"] = 3200,
["Redirect"] = 61000,
["Redirect-Class"] = 13000,
["Redirect-distinguish"] = 5000,
["Redirect_category"] = 4900,
["Redirect_category_shell"] = 4010000,
["Redirect_from_modification"] = 3200,
["Redirect_from_move"] = 3700,
["Redirect_italic_title"] = 2100,
["Redirect_shell"] = 323000,
["Redirect_template"] = 7720000,
["Redirect_to_section"] = 3700,
["Redr"] = 9300,
["Ref"] = 24000,
["Ref_heading"] = 2400,
["Ref_improve"] = 2400,
["Ref_label"] = 13000,
["Refbegin"] = 223000,
["Refbegin/styles.css"] = 223000,
["Refend"] = 222000,
["Reference_column_heading"] = 10000,
["Reference_page"] = 77000,
["Refh"] = 4400,
["Refideas"] = 29000,
["Refimprove"] = 76000,
["Reflist"] = 6500000,
["Reflist-talk"] = 107000,
["Reflist-talk/styles.css"] = 108000,
["Reflist/styles.css"] = 6500000,
["Reflist_talk"] = 7800,
["Refn"] = 42000,
["Reftalk"] = 9200,
["Region_history_sidebar_title"] = 5900,
["Registration_required"] = 8000,
["Reign"] = 5600,
["Related_molecular_formulas"] = 2300,
["ReleaseVersionParameters"] = 2100,
["Release_version_parameters"] = 2100,
["Reliable_sources_for_medical_articles"] = 14000,
["Remove_accents"] = 9000,
["Remove_file_prefix"] = 2200,
["Remove_first_word"] = 190000,
["Remove_last_word"] = 21000,
["Repeat_vandal"] = 2700,
["Repeated_IP_abuse"] = 5200,
["Repeatvandal"] = 2200,
["Replace"] = 1520000,
["Reply"] = 23000,
["Reply_to"] = 365000,
["Replyto"] = 19000,
["Republican_Party_(US)/meta/shading"] = 18000,
["Reqmapin"] = 2600,
["Reqphoto"] = 73000,
["Request_and_endorse"] = 2200,
["Request_edit_button"] = 12000,
["Request_edit_button/styles.css"] = 12000,
["Requestandendorse"] = 2100,
["Resbox"] = 3300,
["Resize"] = 149000,
["Resizediv"] = 14000,
["Resolve_category_redirect"] = 1350000,
["Resolved"] = 18000,
["Respell"] = 23000,
["Respond"] = 73000,
["Resume-like"] = 4300,
["Retired"] = 11000,
["Retrieved"] = 3200,
["Reverse_date"] = 54000,
["Reviewer_topicon"] = 2700,
["RfA_watchlist_notice"] = 7100,
["Rfd_log_header"] = 7200,
["Ribbon_devices"] = 5200,
["Ribbon_devices/alt"] = 5200,
["Ribbon_devices/device"] = 4100,
["Ribbon_devices/device_layout"] = 4100,
["Ric"] = 17000,
["Right"] = 6800,
["Right_ascension"] = 11000,
["Rint"] = 30000,
["Rlp"] = 11000,
["Rlp/Positions"] = 11000,
["Rmri"] = 3900,
["Rnd"] = 8400,
["Rollback_topicon"] = 3300,
["Roman"] = 3200,
["Romania_metadata_Wikidata"] = 3200,
["RomanianSoccer"] = 2400,
["Rotten-tomatoes"] = 9200,
["Rotten_Tomatoes"] = 26000,
["Rotten_Tomatoes_data"] = 6400,
["Rotten_Tomatoes_prose"] = 6500,
["Round"] = 61000,
["Round4-with_third"] = 3500,
["Round_corners"] = 9600,
["Rounddown"] = 3000,
["RouteBox"] = 9600,
["Routemap"] = 30000,
["Routemap/embeded_text"] = 9300,
["Routemap/if_empty_codes"] = 5000,
["Routemap/styles.css"] = 30000,
["RoutemapRouteIcon"] = 4000,
["Row_hover_highlight"] = 2800,
["Row_hover_highlight/styles.css"] = 2800,
["Royal_Australian_Navy_ship"] = 6700,
["Royal_Canadian_Navy_ship"] = 5300,
["Royal_Mail_ship"] = 6400,
["Royal_Netherlands_Navy_ship"] = 3300,
["Rp"] = 74000,
["Rshell"] = 10000,
["Rtl-para"] = 2100,
["Rto"] = 3500,
["Ru"] = 3700,
["Ru-census"] = 7500,
["Ru-census2002"] = 5700,
["Ru-census2010"] = 7500,
["Ru-pop-ref"] = 9900,
["Ruby/styles.css"] = 2100,
["Rugby_box"] = 3500,
["Rugby_league_positions"] = 11000,
["Rugby_league_positions/Positions"] = 11000,
["Rugby_league_squad2_coach"] = 2800,
["Rugby_union_team"] = 5300,
["Rugby_union_team/link"] = 5300,
["Rugbybox"] = 3500,
["RussiaAdmMunRef"] = 5800,
["Russia_Time_Zone_Wikidata"] = 6700,
["Russia_Time_Zone_Wikidata/getQID"] = 6500,
["Russia_by_federal_subject_category_navigation"] = 3000,
["Rut"] = 5300,
["Rwd"] = 4700,
["Rws"] = 27000,
["Module:R_avoided_double_redirect"] = 196000,
["Module:Rail-interchange_multi"] = 15000,
["Module:Random"] = 13000,
["Module:Ranking_movements"] = 4700,
["Module:Ranking_movements/styles.css"] = 4700,
["Module:Redirect"] = 5180000,
["Module:Redirect-distinguish"] = 5000,
["Module:RedirectData"] = 46000,
["Module:Redirect_hatnote"] = 63000,
["Module:Redirect_template"] = 7720000,
["Module:Redirect_template_handler"] = 28000,
["Module:Reply_to"] = 365000,
["Module:ResolveEntityId"] = 498000,
["Module:Resolve_category_redirect"] = 1720000,
["Module:Respell"] = 23000,
["Module:Rivals.com_recruit_url"] = 2500,
["Module:Road_data"] = 18000,
["Module:Road_data/RJL_types"] = 16000,
["Module:Road_data/banners/USA"] = 9400,
["Module:Road_data/browse"] = 18000,
["Module:Road_data/browsetable"] = 18000,
["Module:Road_data/browsetable/styles.css"] = 18000,
["Module:Road_data/countrymask"] = 35000,
["Module:Road_data/extra"] = 32000,
["Module:Road_data/locations"] = 12000,
["Module:Road_data/parser"] = 42000,
["Module:Road_data/parser/hooks"] = 20000,
["Module:Road_data/parser/namespace"] = 4000,
["Module:Road_data/size"] = 18000,
["Module:Road_data/strings/ASIA"] = 9000,
["Module:Road_data/strings/CAN"] = 5000,
["Module:Road_data/strings/EUR"] = 5800,
["Module:Road_data/strings/IND"] = 2300,
["Module:Road_data/strings/JPN"] = 3500,
["Module:Road_data/strings/USA"] = 21000,
["Module:Road_data/strings/USA/regional/GRR"] = 21000,
["Module:Road_data/strings/USA/regional/NER"] = 21000,
["Module:Road_data/strings/USA/regional/Tour"] = 21000,
["Module:Road_data/strings/USA/regional/Trails"] = 21000,
["Module:Road_data/util"] = 43000,
["Module:Roman"] = 6100,
["Module:Rotten_Tomatoes_data"] = 6400,
["Module:RoundN"] = 13000,
["Module:Routemap"] = 30000,
["Module:Rugby_box"] = 3600,
["Module:Russia_by_federal_subject_category_navigation"] = 3000,
}
pmyzc6kkd0rfmfanwqd7yz7teogialc
ಕುಂಟಲ
0
11336
360868
350112
2026-05-18T09:10:25Z
ChiK
1136
Added {{[[Template:Unreferenced|Unreferenced]]}} tag
360868
wikitext
text/x-wiki
{{Unreferenced|date=ಮೇ ೨೦೨೬}}
[[ಫೈಲ್:ഞാറ(കാട്ടുഞാവൽ) Syzygium caryophyllatum നീലിയാർ കോട്ടം.jpg|thumb|300px|ಕುಂಟಲ ಪರ್ಂದ್]]
'''ಕುಂಟಲ''' ಈ ಮರ [[ಶ್ರೀಲಂಕಾ]] ಬುಕ್ಕೊ ದಕ್ಷಿಣ ಭಾರತೊದ [[ಕರ್ನಾಟಕ]], [[ಕೇರಳ]] ಬುಕ್ಕೊ [[ತಮಿಳುನಾಡು]] ರಾಜ್ಯೊಡು ತೂವರೆ ತಿಕ್ಕುಂಡು. ಉಂದೆತ ವೈಜ್ಞಾನಿಕ ಪುದರ್ Syzygium caryophyllatum. ಇಂಗ್ಲಿಸ್ಡ್ ಉಂದೆಕ್ wild black plum ಪಂಡ್ದ್ ಪನ್ಪೆರ್.
==ವಿವರೊ==
ಸಾಧಾರಣ ಮಲ್ಲ ಆಪಿನ ಈ ಮರ ಸುಮಾರ್ ೩೦ ಮೀಟರ್ ದಾತ್ ಮಲ್ಲ ಆಪುಂಡ್. ಉಂದೆತ್ತ ಇರೆ ಪಚ್ಚೆ. ಉಂದೆತ್ತ ಪರ್ಂದ್ ಮರಿಯಾಲೊಡು ತೂಯೆರೆ ತಿಕ್ಕುಂಡು. ಈ ಮರೊಟು ಆಪಿನ ಪಚ್ಚೆ ಕಾಯಿಲು ಪಂರ್ದ್ನಗ ಕಪ್ಪು ಬಣ್ಣೊಗು ತಿರ್ಗುಂಡು. ಒಗರ್ ರುಚಿತ ಈ ಪರ್ಂದ್ ತಿನಿಬುಕ್ಕೊ ನಾಲಯಿ ಪೂರಾ ನೇರಳೆ ಆಪುಂಡು. ಪಂರ್ದ್ದ ಉಲಾಯಿ ಬಿತ್ತ್ ಉಪ್ಪುಂಡು.
[[ಫೈಲ್:Njara - ഞാറ 02.JPG|thumb|left|ಕುಂಟಲ ಪರ್ಂದ್]]
==ಉಪಯೋಗ==
ಉಂದೆತ್ತ ಇರೆ, ಕಾಯಿ, ಗೆಲ್ಲ್ ಬುಕ್ಕೊ ಬೇರ್ನ್ ಬೇತೆ ಬೇತೆ ಮರ್ದ್ಡ್ ಉಪಯೋಗ ಮಲ್ಪುವೆರ್.
==ಚಿತ್ರ ಸಂಪುಟ==
<gallery mode=packed>
Syzygium caryophyllatum 51.JPG|ಕುಂಟಲ ದಯ್ಯಿ
Syzygium caryophyllatum 05.JPG|ಕುಂಟಲ ಪೂ
Syzygium caryophyllatum 16.JPG|ಕುಂಟಲ ಪೂ
Syzygium caryophyllatum - South Indian Plum at Mayyil (7).jpg|ಕುಂಟಲ ಪೂ
Syzygium caryophyllatum 50.JPG|ಕುಂಟಲ ಕಾಯಿ
Syzygium caryophyllatum 06445.jpg|ಕುಂಟಲ ಕಾಯಿ
ഞാറ(കാട്ടുഞാവൽ) Syzygium caryophyllatum നീലിയാർ കോട്ടം.jpg|ಕುಂಟಲ ಕಾಯಿ
Njara - ഞാറ 04.JPG|thumb|ಕುಂಟಲ ಪರ್ಂದ್
</gallery>
== ಉಲ್ಲೇಕೊಲು ==
{{Reflist}}
{{ಪರ್ಂದ್ಲು}}
[[ವರ್ಗೊ:ಪರ್ಂದುಲು]]
351ychtbtgpjm633svjekb6jedjtz2g
ಮೋಡ್ಯೂಲ್:Hatnote/styles.css
828
11871
360834
286071
2026-05-11T21:45:51Z
en>Izno
0
selector
360834
sanitized-css
text/css
/* {{pp|small=y}} */
.hatnote {
font-style: italic;
}
/* Limit structure CSS to divs because of [[Module:Hatnote inline]] */
div.hatnote {
/* @noflip */
padding-left: 1.6em;
margin-bottom: 0.5em;
}
.hatnote i {
font-style: normal;
}
/* The templatestyles causes an 'empty' span between hatnotes */
.hatnote + span.mw-empty-elt + .hatnote,
/* remove this selector when Parsoid is the only parser, see also [[phab:T200206]] */
.hatnote + link + .hatnote {
margin-top: -0.5em;
}
@media print {
body.ns-0 .hatnote {
display: none !important;
}
}
8oift3eve95te8chs4adr5fpl4pmpmd
360835
360834
2026-05-18T04:27:32Z
ChiK
1136
೧ revisions imported from [[:en:Module:Hatnote/styles.css]]
360834
sanitized-css
text/css
/* {{pp|small=y}} */
.hatnote {
font-style: italic;
}
/* Limit structure CSS to divs because of [[Module:Hatnote inline]] */
div.hatnote {
/* @noflip */
padding-left: 1.6em;
margin-bottom: 0.5em;
}
.hatnote i {
font-style: normal;
}
/* The templatestyles causes an 'empty' span between hatnotes */
.hatnote + span.mw-empty-elt + .hatnote,
/* remove this selector when Parsoid is the only parser, see also [[phab:T200206]] */
.hatnote + link + .hatnote {
margin-top: -0.5em;
}
@media print {
body.ns-0 .hatnote {
display: none !important;
}
}
8oift3eve95te8chs4adr5fpl4pmpmd
ಚಂದ್ರಗಿರಿ ಸುದೆ
0
12722
360869
357554
2026-05-18T11:09:03Z
VASANTH S.N.
157
ಚಿತ್ರ ಸೇರಾನ
360869
wikitext
text/x-wiki
[[ಫೈಲ್:Chandragiri River.jpg|thumb|ಚಂದ್ರಗಿರಿ ಸುದೆ]]
'''ಚಂದ್ರಗಿರಿ ಸುದೆ''' ಕಾಸರಗೋಡು ಜಿಲ್ಲೆಡ್ ಇಪ್ಪುನ ಸುದೆಕುಲೆಡ್ ಒಂಜಿ ಉದ್ದದ ಸುದೆ. ನೆನ್ನ್ ಸುಳ್ಯ ಕಡೆಟ್ ಪಯಸ್ವಿನಿ ಸುದೆಂದ್ ಪಂಡ್ತ್ ಲೆಪ್ಪುವೆರ್. ಈ ಸುದೆನ್ ತುಳುನಾಡು ಬುಕ್ಕೊ ಗಡಿನಾಡು ಕಾಸರಗೋಡುನು ಭಾಗ ಮಲ್ಪುನ ಇಜ್ಜಿಂಡ ಸಾಂಪ್ರಾದಾಯಿಕವಾಯಿನ ಒಂಜಿ ಗಡಿ ಪಂದ್ ಪನೊಲಿ. ಈ ಸುದೆ ಕರ್ನಾಟಕೊದ ಕೊಡಗು ಜಿಲ್ಲೆದ ಪಶ್ಚಿಮ ಘಟ್ಟೊಡು ತಲಕಾವೇರಿ ವನ್ಯಜೀವಿ ಅಭಯಾರಣ್ಯೊಡು ಪುಟ್ಟುಂಡು. [[ಸುಳ್ಯ]] ಜಾಲ್ಸೂರು, ಪರಪ್ಪ, ಅಡೂರು, ಚೆಂಗಳ ಬುಕ್ಕೊ [[ಕಾಸರಗೋಡ್|ಕಾಸರಗೋಡು]] ಸೇರ್ದ್ ಅರಬ್ಬಿ ಸಮುದ್ರೊಗು ಸೇರುಂಡು. ಸುಳ್ಯ ತಾಲೂಕುಡು ಗೃಹೊ ಬುಕ್ಕೊ ಕೃಷಿ ಉಪಯೋಗೊಲೆಗ್ ಪ್ರಮುಖವಾಯಿನ ನೀರ್ದ ಮೂಲೊ.<ref>{{cite web|title=chandragir river and fort|url=https://www.keralatourism.org/shootinglocations/chandragiri-fort-river/6}}</ref>
== ಸುದೆತ ಚಲನೆ ==
[[File:Payaswini River at Adhur Kerala.jpg|thumb|Left|ಕೇರಳದ ಅಧೂರುಡಿ ಚಂದ್ರಗಿರಿ( ಪಯಸ್ವಿನಿ) ಸುದೆ]]
ಚಂದ್ರಗಿರಿ ಸುದೆ ೧೦೫ಕಿಮೀ ಉದ್ದ ಉಂಡು. ಈ ಸುದೆ ಪುಷ್ಪಗಿರಿ ವನ್ಯಜೀವಿ ಅಭಯಾರಣ್ಯನ್ ದಾಂಟ್ದ್ ದಕ್ಷಿಣ ಕನ್ನಡದ ಅಡ್ಯಡ್ಕ, ಬಿಳಿಯಾರ್, ಪರಿವಾರಕಾನ, ಪಾಲಡ್ಕ, ಸುಳ್ಯ, ಪಿಲಿಕೋಡಿ ಬುಕ್ಕೊ ಕನ್ಯಾನದ ಗುಡ್ಡೆಡ್ ಪರಪುಂಡು. ಕೇರಳನ್ ಪ್ರವೇಶ ಮಲ್ತಿ ಬುಕ್ಕೊ ಕಾಸರಗೋಡು ಜಿಲ್ಲೆದ ಪೂರ್ವ ಭಾಗೊಡು ಇಪ್ಪುನ ಪಂಜಿಕ್ಕಲ್, ಕೊಟ್ಟ್ಯಾಡಿ, ಅದ್ದೂರು, ಪೂವಡ್ಕ, ಕೊಟ್ಟಂಕುಝಿ, ಬೇತೂರ್ಪುಳ, ಕುಂಡಂಕುಝಿ, ಕೊಳತ್ತೂರು, ಮುಳಿಯಾರ್ ಬುಕ್ಕೊ ಬೋವಿಕ್ಕಾನ ಜಾಗೆಗ್ ಸೇರುಂಡು. ತೆಕ್ಕಿಲ್, ಚೆಂಗಳ, ಚಟ್ಟಂಚಲ್, ಪೆರುಂಬಳ, ಚೆಮ್ನಾಡ್ ಬುಕ್ಕೊ ಕಾಸರಗೋಡು ಸೇರ್ದ್ ತಳಂಗರಾ ಪನ್ಪಿನಲ್ಪ ಅರಬ್ಬೀ ಸಮುದ್ರೊಗು ಸೇರುಂಡು.<ref>{{cite web|url=https://kerala.me/environment/lakes-and-rivers/chandragiri|title=Archive copy|accessdate=2022-07-31|archivedate=2021-10-26|archive-url=https://web.archive.org/web/20211026223432/https://www.kerala.me/environment/lakes-and-rivers/chandragiri|url-status=dead}}</ref>
== ಉಪನದಿಲು ==
ಉಪನದಿ ಪಂಡ ಪ್ರದಾನ ಸುದೆ ಇಜ್ಜಿಂಡ ಮಲ್ಲ ಸುದೆ ಪರಪ್ಪುನಗ ಉಂಟಾಪಿನ ಎಲ್ಯ ಸುದೆಕುಲು. ಚಂದ್ರಗಿರಿ ಸುದೆತ ಮಲ್ಲ ಉಪನದಿ ಕುಡುಂಬೂರ್ ಸುದೆ. ಉಂದು ಕಾಸರಗೋಡುದ ಚಟ್ಟಂಚಲ್ನ ಪೂರ್ವೊಡು ಪಯಸ್ವಿನಿ ಸುದೆನ್ ಸೇರುಂಡು.
== ಉಲ್ಲೇಕೊಲು ==
{{Reflist}}
== ನನಾತ್ ಓದರ ==
*{{cite book|author=S. Jayashanker|title=Temples of Kasaragod District|url=https://books.google.com/books?id=WnLXAAAAMAAJ&q=perumpuzha|year=2001|publisher=Controller of Publications|page=4}}
*{{cite book|author=Adoor K. K. Ramachandran Nair|title=Kerala State Gazetteer|url=https://books.google.com/books?id=LXVuAAAAMAAJ&q=perumpuzha|year=1986|publisher=State Editor, Kerala Gazetteers|page=9}}
*{{cite web |title=Namboothiri Rulers (Naaduvaazhikal) |url=https://www.namboothiri.com/articles/naaduvaazhikal.htm |website=www.namboothiri.com |access-date=12 July 2021 |archive-date=7 May 2021 |archive-url=https://web.archive.org/web/20210507074232/https://www.namboothiri.com/articles/naaduvaazhikal.htm |url-status=dead }}|name_etymology=[[Chandragupta Maurya]]
*{{cite web|url=https://www.keralatourism.org/bekal/rivers-kasaragod.php|title=Kasaragod Rivers|publisher=www.keralatourism.org|access-date=2021-01-23}}
[[ವರ್ಗೊ:ಸುದೆಕುಲು]]
[[ವರ್ಗೊ:ತುಳುನಾಡ್]]
65ye7mjp7llzjo4le5bk0ywggn6c930
360870
360869
2026-05-18T11:10:14Z
VASANTH S.N.
157
360870
wikitext
text/x-wiki
[[ಫೈಲ್:Chandragiri River.jpg|thumb|ಚಂದ್ರಗಿರಿ ಸುದೆ]]
'''ಚಂದ್ರಗಿರಿ ಸುದೆ''' ಕಾಸರಗೋಡು ಜಿಲ್ಲೆಡ್ ಇಪ್ಪುನ ಸುದೆಕುಲೆಡ್ ಒಂಜಿ ಉದ್ದದ ಸುದೆ. ನೆನ್ನ್ ಸುಳ್ಯ ಕಡೆಟ್ ಪಯಸ್ವಿನಿ ಸುದೆಂದ್ ಪಂಡ್ತ್ ಲೆಪ್ಪುವೆರ್. ಈ ಸುದೆನ್ ತುಳುನಾಡು ಬುಕ್ಕೊ ಗಡಿನಾಡು ಕಾಸರಗೋಡುನು ಭಾಗ ಮಲ್ಪುನ ಇಜ್ಜಿಂಡ ಸಾಂಪ್ರಾದಾಯಿಕವಾಯಿನ ಒಂಜಿ ಗಡಿ ಪಂದ್ ಪನೊಲಿ. ಈ ಸುದೆ ಕರ್ನಾಟಕೊದ ಕೊಡಗು ಜಿಲ್ಲೆದ ಪಶ್ಚಿಮ ಘಟ್ಟೊಡು ತಲಕಾವೇರಿ ವನ್ಯಜೀವಿ ಅಭಯಾರಣ್ಯೊಡು ಪುಟ್ಟುಂಡು. [[ಸುಳ್ಯ]] ಜಾಲ್ಸೂರು, ಪರಪ್ಪ, ಅಡೂರು, ಚೆಂಗಳ ಬುಕ್ಕೊ [[ಕಾಸರಗೋಡ್|ಕಾಸರಗೋಡು]] ಸೇರ್ದ್ ಅರಬ್ಬಿ ಸಮುದ್ರೊಗು ಸೇರುಂಡು. ಸುಳ್ಯ ತಾಲೂಕುಡು ಗೃಹೊ ಬುಕ್ಕೊ ಕೃಷಿ ಉಪಯೋಗೊಲೆಗ್ ಪ್ರಮುಖವಾಯಿನ ನೀರ್ದ ಮೂಲೊ.<ref>{{cite web|title=chandragir river and fort|url=https://www.keralatourism.org/shootinglocations/chandragiri-fort-river/6}}</ref>
== ಸುದೆತ ಚಲನೆ ==
[[File:Payaswini River at Adhur Kerala.jpg|thumb|Left|ಕೇರಳದ ಅಧೂರುಡು ಚಂದ್ರಗಿರಿ( ಪಯಸ್ವಿನಿ) ಸುದೆ]]
ಚಂದ್ರಗಿರಿ ಸುದೆ ೧೦೫ಕಿಮೀ ಉದ್ದ ಉಂಡು. ಈ ಸುದೆ ಪುಷ್ಪಗಿರಿ ವನ್ಯಜೀವಿ ಅಭಯಾರಣ್ಯನ್ ದಾಂಟ್ದ್ ದಕ್ಷಿಣ ಕನ್ನಡದ ಅಡ್ಯಡ್ಕ, ಬಿಳಿಯಾರ್, ಪರಿವಾರಕಾನ, ಪಾಲಡ್ಕ, ಸುಳ್ಯ, ಪಿಲಿಕೋಡಿ ಬುಕ್ಕೊ ಕನ್ಯಾನದ ಗುಡ್ಡೆಡ್ ಪರಪುಂಡು. ಕೇರಳನ್ ಪ್ರವೇಶ ಮಲ್ತಿ ಬುಕ್ಕೊ ಕಾಸರಗೋಡು ಜಿಲ್ಲೆದ ಪೂರ್ವ ಭಾಗೊಡು ಇಪ್ಪುನ ಪಂಜಿಕ್ಕಲ್, ಕೊಟ್ಟ್ಯಾಡಿ, ಅದ್ದೂರು, ಪೂವಡ್ಕ, ಕೊಟ್ಟಂಕುಝಿ, ಬೇತೂರ್ಪುಳ, ಕುಂಡಂಕುಝಿ, ಕೊಳತ್ತೂರು, ಮುಳಿಯಾರ್ ಬುಕ್ಕೊ ಬೋವಿಕ್ಕಾನ ಜಾಗೆಗ್ ಸೇರುಂಡು. ತೆಕ್ಕಿಲ್, ಚೆಂಗಳ, ಚಟ್ಟಂಚಲ್, ಪೆರುಂಬಳ, ಚೆಮ್ನಾಡ್ ಬುಕ್ಕೊ ಕಾಸರಗೋಡು ಸೇರ್ದ್ ತಳಂಗರಾ ಪನ್ಪಿನಲ್ಪ ಅರಬ್ಬೀ ಸಮುದ್ರೊಗು ಸೇರುಂಡು.<ref>{{cite web|url=https://kerala.me/environment/lakes-and-rivers/chandragiri|title=Archive copy|accessdate=2022-07-31|archivedate=2021-10-26|archive-url=https://web.archive.org/web/20211026223432/https://www.kerala.me/environment/lakes-and-rivers/chandragiri|url-status=dead}}</ref>
== ಉಪನದಿಲು ==
ಉಪನದಿ ಪಂಡ ಪ್ರದಾನ ಸುದೆ ಇಜ್ಜಿಂಡ ಮಲ್ಲ ಸುದೆ ಪರಪ್ಪುನಗ ಉಂಟಾಪಿನ ಎಲ್ಯ ಸುದೆಕುಲು. ಚಂದ್ರಗಿರಿ ಸುದೆತ ಮಲ್ಲ ಉಪನದಿ ಕುಡುಂಬೂರ್ ಸುದೆ. ಉಂದು ಕಾಸರಗೋಡುದ ಚಟ್ಟಂಚಲ್ನ ಪೂರ್ವೊಡು ಪಯಸ್ವಿನಿ ಸುದೆನ್ ಸೇರುಂಡು.
== ಉಲ್ಲೇಕೊಲು ==
{{Reflist}}
== ನನಾತ್ ಓದರ ==
*{{cite book|author=S. Jayashanker|title=Temples of Kasaragod District|url=https://books.google.com/books?id=WnLXAAAAMAAJ&q=perumpuzha|year=2001|publisher=Controller of Publications|page=4}}
*{{cite book|author=Adoor K. K. Ramachandran Nair|title=Kerala State Gazetteer|url=https://books.google.com/books?id=LXVuAAAAMAAJ&q=perumpuzha|year=1986|publisher=State Editor, Kerala Gazetteers|page=9}}
*{{cite web |title=Namboothiri Rulers (Naaduvaazhikal) |url=https://www.namboothiri.com/articles/naaduvaazhikal.htm |website=www.namboothiri.com |access-date=12 July 2021 |archive-date=7 May 2021 |archive-url=https://web.archive.org/web/20210507074232/https://www.namboothiri.com/articles/naaduvaazhikal.htm |url-status=dead }}|name_etymology=[[Chandragupta Maurya]]
*{{cite web|url=https://www.keralatourism.org/bekal/rivers-kasaragod.php|title=Kasaragod Rivers|publisher=www.keralatourism.org|access-date=2021-01-23}}
[[ವರ್ಗೊ:ಸುದೆಕುಲು]]
[[ವರ್ಗೊ:ತುಳುನಾಡ್]]
a5dqfayboqnmc7kt6yzd2j06ku3wuvh
ಟೆಂಪ್ಲೇಟ್:Editnotices/Page/ವಿಕಿಪೀಡಿಯ:ಚಾವಡಿ
10
18591
360823
351896
2026-05-18T03:03:11Z
ChiK
1136
/* */
360823
wikitext
text/x-wiki
{{editnotice
| expiry =
| id = edit notice for Village Pump
| header =
| headerstyle =
| text = ಒಂಜಿ ಪೊಸ ವಿಬಾಗೊನು ಸುರು ಮಲ್ಪುನಗ, ದಯಮಲ್ತ್ ಶೀರ್ಷಿಕೆನ್ ನಿರ್ದಿಷ್ಟವಾದ್ ಬುಕ್ಕೊ ಸಂಕ್ಷಿಪ್ತವಾದ್ ಮಲ್ಪುಲೆ.
| textstyle =
| image =
}}
rqlxod7n8wj4imluinoglhfnrna42oh
ಟೆಂಪ್ಲೇಟ್:R protected/semi
10
18805
360830
351690
2026-04-18T03:55:05Z
en>Pppery
0
Changed protection settings for "[[Template:R protected/semi]]" ([Edit=Require template editor access] (indefinite) [Move=Require template editor access] (indefinite))
351689
wikitext
text/x-wiki
{{Redirect template
|id=R semi-protected
|name=[[:Category:Wikipedia semi-protected redirects|Semi-protected]]
|from=a title that is semi-protected from editing for any of several possible reasons
|info=** '''Please do not replace these redirected links''' with links directly to the target page unless expressly advised to do so below or elsewhere on this page, or if the change is supported by a policy or guideline.
|all category=<!--for automatic namespace detection-->
}}<includeonly>{{#ifeq:{{{nocat|}}}|true||{{#ifeq:{{FULLPAGENAME}}|Template:R semi-protected||{{#ifeq: {{SUBPAGENAME}}|sandbox||{{#switch: {{PROTECTIONLEVEL:move}}
|extendedconfirmed=[[Category:Wikipedia extended-confirmed-protected redirects]]
|templateeditor=[[Category:Wikipedia template-protected redirects]]
|sysop=[[Category:Wikipedia fully protected redirects]]
}}{{#switch: {{PROTECTIONLEVEL:edit}}
|autoconfirmed=[[Category:Wikipedia semi-protected redirects]]
|extendedconfirmed|templateeditor|sysop|#default=[[Category:Wikipedia pages with incorrect protection templates]]
}}}}}}}}</includeonly><noinclude>
{{documentation}}
</noinclude>
m2d8h9o1j2pekuqat8itp7ir04ao76t
360831
360830
2026-05-18T04:27:19Z
ChiK
1136
೧ revisions imported from [[:en:Template:R_protected/semi]]
351689
wikitext
text/x-wiki
{{Redirect template
|id=R semi-protected
|name=[[:Category:Wikipedia semi-protected redirects|Semi-protected]]
|from=a title that is semi-protected from editing for any of several possible reasons
|info=** '''Please do not replace these redirected links''' with links directly to the target page unless expressly advised to do so below or elsewhere on this page, or if the change is supported by a policy or guideline.
|all category=<!--for automatic namespace detection-->
}}<includeonly>{{#ifeq:{{{nocat|}}}|true||{{#ifeq:{{FULLPAGENAME}}|Template:R semi-protected||{{#ifeq: {{SUBPAGENAME}}|sandbox||{{#switch: {{PROTECTIONLEVEL:move}}
|extendedconfirmed=[[Category:Wikipedia extended-confirmed-protected redirects]]
|templateeditor=[[Category:Wikipedia template-protected redirects]]
|sysop=[[Category:Wikipedia fully protected redirects]]
}}{{#switch: {{PROTECTIONLEVEL:edit}}
|autoconfirmed=[[Category:Wikipedia semi-protected redirects]]
|extendedconfirmed|templateeditor|sysop|#default=[[Category:Wikipedia pages with incorrect protection templates]]
}}}}}}}}</includeonly><noinclude>
{{documentation}}
</noinclude>
m2d8h9o1j2pekuqat8itp7ir04ao76t
ಟೆಂಪ್ಲೇಟ್:Requested move
10
21883
360832
2023-01-25T03:37:33Z
en>Pppery
0
Move to /doc
360832
wikitext
text/x-wiki
<includeonly>{{ {{{|safesubst:}}}require subst|template=Requested move
|{{safesubst:#invoke:requested move|main}} }}</includeonly><noinclude>
{{documentation}}
<!-- Categories go on the /doc subpage, and interwikis go on Wikidata. -->
</noinclude>
j2pxitll6ka3wp2a7d5fztdtiuhqeoh
360833
279484
2026-05-18T04:27:31Z
ChiK
1136
೧ revisions imported from [[:en:Template:Requested_move]]
279484
wikitext
text/x-wiki
<includeonly>{{ {{{|safesubst:}}}require subst|template=Requested move
|{{safesubst:#invoke:requested move|main}} }}</includeonly><noinclude>
{{documentation}}
<!-- Categories go on the /doc subpage, and interwikis go on Wikidata. -->
</noinclude>
j2pxitll6ka3wp2a7d5fztdtiuhqeoh
ಟೆಂಪ್ಲೇಟ್:Requested move/doc
10
21885
360840
354244
2026-03-08T03:06:33Z
en>Pppery
0
Per [[m:Talk:Interwiki map#Dict]]
360840
wikitext
text/x-wiki
{{Documentation subpage}}
<!-- Please place categories where indicated at the bottom of this page and interwikis at Wikidata (see [[Wikipedia:Wikidata]]) -->
{{Redirect2|Template:Move|Template:Move-multi|the template for moving discussions|Template:Moved discussion to|details on the corresponding procedure|#Multiple related move requests}}
{{Redirect-confused|Template:Rename|Template:Renamed}}
{{Template shortcut|pre=subst:|Move|Rename|Rm}}
{{Subst only}}
{{Twinkle standard installation}}
{{Bot use warning|bots=[[User:RMCD bot]]}}
{{Lua|Module:Requested move}}
[[{{NAMESPACE}}{{colon}}{{ROOTPAGENAME}}]], with the assistance of [[User:RMCD bot|RMCD bot]], populates [[Wikipedia:Requested moves/Current discussions]] and [[:Category:Requested moves]].
This template is substituted for [[input validation]] and archiving reasons (so a permanent record of the proposed page name can be placed on the talk page).
Edits to this template, and [[Module:Requested move]], which it invokes, can adversely affect RMCD bot. Please check edits with the bot operator before implementation.
==Usage==
===Specified new name===
Use this template to tag articles with a [[Wikipedia:Requested moves#Requesting controversial and potentially controversial moves|controversial or potentially controversial move request]]. For uncontroversial/technical requests, use {{tls|RMassist}}.
This template should be substituted into the talk page of the article to be moved. It is not placed in the article itself.
Please note that unlike {{tl|Article for deletion}}, the discussion for a page move must take place on the [[Help:talk page|talk page]], '''not''' on [[Wikipedia:Requested moves]].
Add this template at the bottom of the talk page of the page that you want to be moved. It should be formatted like this:
<pre style="border:2px inset #222222;padding:4px;margin:1em;background-color:white;width:60%;white-space:pre-wrap;">
{{subst:Requested move |NewName |reason=Why ...}}
</pre>
Where:
*{{mono|{{var|NewName}}}} = your proposed new name for the page, i.e., the name which the page should be renamed or moved to
*{{mono|{{var|Why ...}}}} = your rationale for the proposed page name change, ideally referring to applicable naming convention policies and guidelines, and providing evidence in support where appropriate
**Please do not include templates that expand to tables, such as nav templates or {{tl|Not a ballot}}, and also avoid collapse templates such as {{tl|collapse}} and {{tl|hidden}}. Templates like {{tl|Not a ballot}} can go in the line above the requested move banner.
**If such extra information is required in the nomination, please post it afterwards as a comment.
This will create a template (see [[Template:Requested move/dated]]) in a new section on the talk page, and links to the old page and new page. For example:
<pre style="border:2px inset #222222;padding:4px;margin:1em;background-color:white;width:60%;white-space:pre-wrap;">
{{subst:Requested move |Template:Move |reason="Move" was the original name of this template, and we should revert to that.}}
</pre>
will create:
<div style="border:2px inset #222222;padding:4px;">
{{fake heading|Requested move {{#time: j F Y | {{CURRENTTIMESTAMP}} }}}}
{{Requested move/dated/mirror|Template:Move}}
[[Template:Requested move]] → {{no redirect|Template:Move}} – "Move" was the original name of this template, and we should revert to that. Username (talk) {{CURRENTTIME}}, {{#time: j F Y | {{CURRENTTIMESTAMP}} }} (UTC)
</div>
[[User:RMCD bot]] will copy the move information to [[Wikipedia:Requested moves|WP:RM]], usually within 20 minutes.
===Unspecified new name===
If you're unsure about what the best new name is, use a question mark for the new name.
<pre style="border:2px inset #222222;padding:4px;margin:1em;background-color:white;width:60%;white-space:pre-wrap;">
{{subst:Requested move |? |reason=The name should be either "move" or "rename", let's discuss which is better.}}
</pre>
creates:
<div style="border:2px inset #222222;padding:4px;">
{{fake heading|Requested move {{#time: j F Y | {{CURRENTTIMESTAMP}} }}}}
{{Requested move/dated/mirror|?}}
[[Template:Requested move]] → ? – The name should be either "move" or "rename", let's discuss which is better. Username (talk) {{CURRENTTIME}}, {{#time: j F Y | {{CURRENTTIMESTAMP}} }} (UTC)
</div>
===Custom heading===
You may also ask the template to override the default heading by supplying a value to the {{para|heading}} parameter ({{para|header}} will also work).
<pre style="border:2px inset #222222;padding:4px;margin:1em;background-color:white;width:60%;white-space:pre-wrap;">
{{subst:Requested move |Template:Rename |reason=Rename is a more intuitive term. |heading=Rename this?}}
</pre>
creates:
<div style="border:2px inset #222222;padding:4px;">
{{fake heading|Rename this?}}
{{requested move/dated/mirror|Template:Rename}}
[[:Template:Requested move]] → {{no redirect|Template:Rename}} – Rename is a more intuitive term. Username (talk) {{CURRENTTIME}}, {{#time: j F Y | {{CURRENTTIMESTAMP}} }} (UTC)
</div>
===Shared talk pages===
If the talk page is a redirect, you may start the discussion on the target's talk page.
In the following example, the talk page of the page to be moved, [[WT:WikiProject Articles for creation/Resources]], redirects to its parent talk page, [[WT:WikiProject Articles for creation]]. The below code would be placed on the latter to centralize discussion:
<pre style="border:2px inset #222222;padding:4px;margin:1em;background-color:white;width:60%;white-space:pre-wrap;">
{{subst:requested move |reason=(the reason for the page move goes here). |current1=Wikipedia:WikiProject Articles for creation/Resources |new1=Wikipedia:WikiProject Articles for creation/Reviewing and templates}}
</pre>
Instead of the {{para|1}} unnamed parameter, the {{para|current1}} and {{para|new1}} parameters are used. The method is similar to the one under [[#Multiple related move requests]]. This creates:
<div style="border:2px inset #222222;padding:4px;">
{{fake heading|Requested move {{#time: j F Y | {{CURRENTTIMESTAMP}} }}}}
{{Requested move/dated/mirror|multiple=yes|current1=Wikipedia:WikiProject Articles for creation/Resources|new1=Wikipedia:WikiProject Articles for creation/Reviewing and templates}}
* [[:Wikipedia:WikiProject Articles for creation/Resources]] → {{no redirect|Wikipedia:WikiProject Articles for creation/Reviewing and templates}}
– (the reason for the page move goes here). Username (talk) {{CURRENTTIME}}, {{#time: j F Y | {{CURRENTTIMESTAMP}} }} (UTC)
</div>
===Multiple related move requests===
Related moves should be combined into a single request. This is particularly applicable when changing a [[WP:primary topic|primary topic]], which generally requires moving at least a disambiguation page and another related page. Additional proposed moves should be formatted like this:
<pre style="border:2px inset #222222;padding:4px;margin:1em;background-color:white;width:60%;white-space:pre-wrap;">
{{subst:Requested move
|NewName |reason=Why ...
|current2=Current title of page 2
|new2=New title for page 2
|current3=Current title of page 3
|new3=New title for page 3
...
|currentN = Current title of page N
|newN = New title for page N
}}
</pre>
Where:
*{{mono|{{var|NewName}}}} = your proposed new name for page 1, i.e., the page whose talk page is being used for the discussion
*{{mono|{{var|N}}}} = the number of pages which are proposed for moves
Occasionally the discussions for significant multi-move requests may be hosted on [[WP:WikiProject|WikiProject]] talk pages or other pages in [[Wikipedia:Project namespace|Project namespace]]. For multi-move discussions hosted on a page which is not itself proposed to be moved, specify {{para|current1|Current title of page 1}} for the first page to move.
===Adding survey and discussion subsections===
Use the code {{para|talk|yes}} to append the subsections in {{tl|Requested move/talk}}.
===Suppressing the signature or the section heading===
This template automatically adds a [[WP:SIG|signature]] to the requested move reason unless it appears to be already signed. To suppress the signature, you can use the code {{para|sign|no}}. To suppress the section heading, {{para|heading|no}} ({{para|header|no}} will also work).<br />
Requested moves are required to have a section heading and signature, so these parameters should rarely be used, generally only by experienced editors repairing malformed requests.
==Default behavior==
*If neither parameter {{para|1}} nor {{para|new1}} are specified, then '''?''' – an unspecified destination to be decided on the talk page – is assumed
*If neither parameter {{para|2}} nor {{para|reason}} are specified, the default text is "Please place your rationale for the proposed move here." This text should be edited to replace it with an actual rationale for the requested move, or the request will be rejected.
==Deprecated parameter==
*Use of unnamed parameter {{para|2}} is not encouraged, because an unnamed parameter doesn't support a rationale containing an equals sign (often in web links, custom signatures, etc.), due to MediaWiki bug {{phab|T16235}}.
==Error messages==
This template validates editor input, and may write one of the following messages if it's not used as intended. These errors are not reported at [[Wikipedia:Requested moves|WP:RM]]. If you need help using this template, review the instructions given at [[Wikipedia:Requested moves#Requesting controversial and potentially controversial moves|requesting controversial and potentially controversial moves]]. If you still need help, post a question at [[Wikipedia talk:Requested moves]].
*{{strongbad|class=error|1=This template must be [[Wikipedia:Template substitution|substituted]]. Replace <nowiki>{{Requested move ...}} with {{subst:Requested move ...}}</nowiki>.}}
*{{strongbad|class=error|1=[[Template:Requested move]] must be used in a TALKSPACE, e.g., [[{{TALKPAGENAME}}]]}}
*{{strongbad|class=error|1=Request to move a single page must be placed on that page's talk or the page its talk redirects to}}
*{{strongbad|class=error|1=Must create ''[["Title"]]'' before requesting that it be moved}}
*{{strongbad|class=error|1=[[Template:Requested move]] is not for categories, see [[Wikipedia:Categories for discussion]]}}
*{{strongbad|class=error|1=[[Template:Requested move]] is not for files, see [[Wikipedia:Moving a page#Moving a file page]] (use [[template:Rename media]] instead)}}
*{{strongbad|class=error|1=[[Template:Requested move]] is not for moves from draft or user space.<br>If you would like to submit your draft for review, add <code>{{tlf|subst:submit}}</code><br>Otherwise, see [[Help:How to move a page]] for instructions.<br>If you cannot move it yourself, see [[Wikipedia:Requested moves#Requesting technical moves|Requesting technical moves]].}}
*{{strongbad|class=error|1=Invalid character "{{var|character}}" found in the "{{var|parameter}}" parameter}} – A pagename cannot contain any of the following characters: <nowiki># < > [ ] { }</nowiki>
*{{strongbad|class=error|1=Invalid title detected in parameter "{{var|parameter}}"; check for [[Wikipedia:Page name#Technical restrictions and limitations|invalid characters]]}} – There are other invalid characters and character sequences, e.g. [[./]]
*{{strongbad|class=error|1=Invalid title detected in parameter "{{var|parameter}}"; has [[Help:Interwiki linking|interwiki prefix]] "{{var|interwiki prefix}}"}} (e.g. [[wikt:]])
*{{strongbad|class=error|1=Duplicate title detected ("{{var|Title}}"); cannot move the same page to two different places}} (applicable to [[#Multiple related move requests|multiple related move requests]])
*{{strongbad|class=error|1="current2" parameter missing; please add it or remove the "new2" parameter}} (applicable to [[#Multiple related move requests|multiple related move requests]])
==TemplateData==
{{TemplateData header}}
<templatedata>
{
"params": {
"1": {
"label": "New name",
"type": "wiki-page-name",
"description": "The proposed title for the page",
"suggested": true
},
"reason": {
"label": "Reason",
"type": "string",
"required": true,
"description": "The reason for the proposed page title"
},
"heading": {
"label": "Custom heading",
"description": "Suppresses the default heading and adds a custom section title",
"type": "string"
},
"sign": {
"label": "Signature",
"description": "Suppresses the signature if set to no",
"type": "boolean"
}
},
"description": "The templates should always be substituted! This template begins a discussion about a controversial or a potentially controversial move. It must be used on the talk page.",
"format": "inline",
"paramOrder": [
"1",
"reason",
"heading",
"sign"
]
}
</templatedata>
==See also==
*{{tl|RM notice}}
*{{tls|RMassist}}
*{{tl|Rename media}}
*{{tls|Requested move/end}}
*{{tl|Old move}}, for listing previous RMs on talk pages
*[[Wikipedia:Template messages/Moving]]
*[[Wikipedia:Requested moves]]
*[[Wikipedia:Categories for discussion]]
<includeonly>{{Sandbox other||
<!-- Categories below this line, please; interwikis at Wikidata -->
[[Category:Wikipedia page-name maintenance templates]]
}}</includeonly>
r1vj35kf9rfrcke3hzuyzne5oqqkion
360841
360840
2026-05-18T04:27:33Z
ChiK
1136
೧ revisions imported from [[:en:Template:Requested_move/doc]]
360840
wikitext
text/x-wiki
{{Documentation subpage}}
<!-- Please place categories where indicated at the bottom of this page and interwikis at Wikidata (see [[Wikipedia:Wikidata]]) -->
{{Redirect2|Template:Move|Template:Move-multi|the template for moving discussions|Template:Moved discussion to|details on the corresponding procedure|#Multiple related move requests}}
{{Redirect-confused|Template:Rename|Template:Renamed}}
{{Template shortcut|pre=subst:|Move|Rename|Rm}}
{{Subst only}}
{{Twinkle standard installation}}
{{Bot use warning|bots=[[User:RMCD bot]]}}
{{Lua|Module:Requested move}}
[[{{NAMESPACE}}{{colon}}{{ROOTPAGENAME}}]], with the assistance of [[User:RMCD bot|RMCD bot]], populates [[Wikipedia:Requested moves/Current discussions]] and [[:Category:Requested moves]].
This template is substituted for [[input validation]] and archiving reasons (so a permanent record of the proposed page name can be placed on the talk page).
Edits to this template, and [[Module:Requested move]], which it invokes, can adversely affect RMCD bot. Please check edits with the bot operator before implementation.
==Usage==
===Specified new name===
Use this template to tag articles with a [[Wikipedia:Requested moves#Requesting controversial and potentially controversial moves|controversial or potentially controversial move request]]. For uncontroversial/technical requests, use {{tls|RMassist}}.
This template should be substituted into the talk page of the article to be moved. It is not placed in the article itself.
Please note that unlike {{tl|Article for deletion}}, the discussion for a page move must take place on the [[Help:talk page|talk page]], '''not''' on [[Wikipedia:Requested moves]].
Add this template at the bottom of the talk page of the page that you want to be moved. It should be formatted like this:
<pre style="border:2px inset #222222;padding:4px;margin:1em;background-color:white;width:60%;white-space:pre-wrap;">
{{subst:Requested move |NewName |reason=Why ...}}
</pre>
Where:
*{{mono|{{var|NewName}}}} = your proposed new name for the page, i.e., the name which the page should be renamed or moved to
*{{mono|{{var|Why ...}}}} = your rationale for the proposed page name change, ideally referring to applicable naming convention policies and guidelines, and providing evidence in support where appropriate
**Please do not include templates that expand to tables, such as nav templates or {{tl|Not a ballot}}, and also avoid collapse templates such as {{tl|collapse}} and {{tl|hidden}}. Templates like {{tl|Not a ballot}} can go in the line above the requested move banner.
**If such extra information is required in the nomination, please post it afterwards as a comment.
This will create a template (see [[Template:Requested move/dated]]) in a new section on the talk page, and links to the old page and new page. For example:
<pre style="border:2px inset #222222;padding:4px;margin:1em;background-color:white;width:60%;white-space:pre-wrap;">
{{subst:Requested move |Template:Move |reason="Move" was the original name of this template, and we should revert to that.}}
</pre>
will create:
<div style="border:2px inset #222222;padding:4px;">
{{fake heading|Requested move {{#time: j F Y | {{CURRENTTIMESTAMP}} }}}}
{{Requested move/dated/mirror|Template:Move}}
[[Template:Requested move]] → {{no redirect|Template:Move}} – "Move" was the original name of this template, and we should revert to that. Username (talk) {{CURRENTTIME}}, {{#time: j F Y | {{CURRENTTIMESTAMP}} }} (UTC)
</div>
[[User:RMCD bot]] will copy the move information to [[Wikipedia:Requested moves|WP:RM]], usually within 20 minutes.
===Unspecified new name===
If you're unsure about what the best new name is, use a question mark for the new name.
<pre style="border:2px inset #222222;padding:4px;margin:1em;background-color:white;width:60%;white-space:pre-wrap;">
{{subst:Requested move |? |reason=The name should be either "move" or "rename", let's discuss which is better.}}
</pre>
creates:
<div style="border:2px inset #222222;padding:4px;">
{{fake heading|Requested move {{#time: j F Y | {{CURRENTTIMESTAMP}} }}}}
{{Requested move/dated/mirror|?}}
[[Template:Requested move]] → ? – The name should be either "move" or "rename", let's discuss which is better. Username (talk) {{CURRENTTIME}}, {{#time: j F Y | {{CURRENTTIMESTAMP}} }} (UTC)
</div>
===Custom heading===
You may also ask the template to override the default heading by supplying a value to the {{para|heading}} parameter ({{para|header}} will also work).
<pre style="border:2px inset #222222;padding:4px;margin:1em;background-color:white;width:60%;white-space:pre-wrap;">
{{subst:Requested move |Template:Rename |reason=Rename is a more intuitive term. |heading=Rename this?}}
</pre>
creates:
<div style="border:2px inset #222222;padding:4px;">
{{fake heading|Rename this?}}
{{requested move/dated/mirror|Template:Rename}}
[[:Template:Requested move]] → {{no redirect|Template:Rename}} – Rename is a more intuitive term. Username (talk) {{CURRENTTIME}}, {{#time: j F Y | {{CURRENTTIMESTAMP}} }} (UTC)
</div>
===Shared talk pages===
If the talk page is a redirect, you may start the discussion on the target's talk page.
In the following example, the talk page of the page to be moved, [[WT:WikiProject Articles for creation/Resources]], redirects to its parent talk page, [[WT:WikiProject Articles for creation]]. The below code would be placed on the latter to centralize discussion:
<pre style="border:2px inset #222222;padding:4px;margin:1em;background-color:white;width:60%;white-space:pre-wrap;">
{{subst:requested move |reason=(the reason for the page move goes here). |current1=Wikipedia:WikiProject Articles for creation/Resources |new1=Wikipedia:WikiProject Articles for creation/Reviewing and templates}}
</pre>
Instead of the {{para|1}} unnamed parameter, the {{para|current1}} and {{para|new1}} parameters are used. The method is similar to the one under [[#Multiple related move requests]]. This creates:
<div style="border:2px inset #222222;padding:4px;">
{{fake heading|Requested move {{#time: j F Y | {{CURRENTTIMESTAMP}} }}}}
{{Requested move/dated/mirror|multiple=yes|current1=Wikipedia:WikiProject Articles for creation/Resources|new1=Wikipedia:WikiProject Articles for creation/Reviewing and templates}}
* [[:Wikipedia:WikiProject Articles for creation/Resources]] → {{no redirect|Wikipedia:WikiProject Articles for creation/Reviewing and templates}}
– (the reason for the page move goes here). Username (talk) {{CURRENTTIME}}, {{#time: j F Y | {{CURRENTTIMESTAMP}} }} (UTC)
</div>
===Multiple related move requests===
Related moves should be combined into a single request. This is particularly applicable when changing a [[WP:primary topic|primary topic]], which generally requires moving at least a disambiguation page and another related page. Additional proposed moves should be formatted like this:
<pre style="border:2px inset #222222;padding:4px;margin:1em;background-color:white;width:60%;white-space:pre-wrap;">
{{subst:Requested move
|NewName |reason=Why ...
|current2=Current title of page 2
|new2=New title for page 2
|current3=Current title of page 3
|new3=New title for page 3
...
|currentN = Current title of page N
|newN = New title for page N
}}
</pre>
Where:
*{{mono|{{var|NewName}}}} = your proposed new name for page 1, i.e., the page whose talk page is being used for the discussion
*{{mono|{{var|N}}}} = the number of pages which are proposed for moves
Occasionally the discussions for significant multi-move requests may be hosted on [[WP:WikiProject|WikiProject]] talk pages or other pages in [[Wikipedia:Project namespace|Project namespace]]. For multi-move discussions hosted on a page which is not itself proposed to be moved, specify {{para|current1|Current title of page 1}} for the first page to move.
===Adding survey and discussion subsections===
Use the code {{para|talk|yes}} to append the subsections in {{tl|Requested move/talk}}.
===Suppressing the signature or the section heading===
This template automatically adds a [[WP:SIG|signature]] to the requested move reason unless it appears to be already signed. To suppress the signature, you can use the code {{para|sign|no}}. To suppress the section heading, {{para|heading|no}} ({{para|header|no}} will also work).<br />
Requested moves are required to have a section heading and signature, so these parameters should rarely be used, generally only by experienced editors repairing malformed requests.
==Default behavior==
*If neither parameter {{para|1}} nor {{para|new1}} are specified, then '''?''' – an unspecified destination to be decided on the talk page – is assumed
*If neither parameter {{para|2}} nor {{para|reason}} are specified, the default text is "Please place your rationale for the proposed move here." This text should be edited to replace it with an actual rationale for the requested move, or the request will be rejected.
==Deprecated parameter==
*Use of unnamed parameter {{para|2}} is not encouraged, because an unnamed parameter doesn't support a rationale containing an equals sign (often in web links, custom signatures, etc.), due to MediaWiki bug {{phab|T16235}}.
==Error messages==
This template validates editor input, and may write one of the following messages if it's not used as intended. These errors are not reported at [[Wikipedia:Requested moves|WP:RM]]. If you need help using this template, review the instructions given at [[Wikipedia:Requested moves#Requesting controversial and potentially controversial moves|requesting controversial and potentially controversial moves]]. If you still need help, post a question at [[Wikipedia talk:Requested moves]].
*{{strongbad|class=error|1=This template must be [[Wikipedia:Template substitution|substituted]]. Replace <nowiki>{{Requested move ...}} with {{subst:Requested move ...}}</nowiki>.}}
*{{strongbad|class=error|1=[[Template:Requested move]] must be used in a TALKSPACE, e.g., [[{{TALKPAGENAME}}]]}}
*{{strongbad|class=error|1=Request to move a single page must be placed on that page's talk or the page its talk redirects to}}
*{{strongbad|class=error|1=Must create ''[["Title"]]'' before requesting that it be moved}}
*{{strongbad|class=error|1=[[Template:Requested move]] is not for categories, see [[Wikipedia:Categories for discussion]]}}
*{{strongbad|class=error|1=[[Template:Requested move]] is not for files, see [[Wikipedia:Moving a page#Moving a file page]] (use [[template:Rename media]] instead)}}
*{{strongbad|class=error|1=[[Template:Requested move]] is not for moves from draft or user space.<br>If you would like to submit your draft for review, add <code>{{tlf|subst:submit}}</code><br>Otherwise, see [[Help:How to move a page]] for instructions.<br>If you cannot move it yourself, see [[Wikipedia:Requested moves#Requesting technical moves|Requesting technical moves]].}}
*{{strongbad|class=error|1=Invalid character "{{var|character}}" found in the "{{var|parameter}}" parameter}} – A pagename cannot contain any of the following characters: <nowiki># < > [ ] { }</nowiki>
*{{strongbad|class=error|1=Invalid title detected in parameter "{{var|parameter}}"; check for [[Wikipedia:Page name#Technical restrictions and limitations|invalid characters]]}} – There are other invalid characters and character sequences, e.g. [[./]]
*{{strongbad|class=error|1=Invalid title detected in parameter "{{var|parameter}}"; has [[Help:Interwiki linking|interwiki prefix]] "{{var|interwiki prefix}}"}} (e.g. [[wikt:]])
*{{strongbad|class=error|1=Duplicate title detected ("{{var|Title}}"); cannot move the same page to two different places}} (applicable to [[#Multiple related move requests|multiple related move requests]])
*{{strongbad|class=error|1="current2" parameter missing; please add it or remove the "new2" parameter}} (applicable to [[#Multiple related move requests|multiple related move requests]])
==TemplateData==
{{TemplateData header}}
<templatedata>
{
"params": {
"1": {
"label": "New name",
"type": "wiki-page-name",
"description": "The proposed title for the page",
"suggested": true
},
"reason": {
"label": "Reason",
"type": "string",
"required": true,
"description": "The reason for the proposed page title"
},
"heading": {
"label": "Custom heading",
"description": "Suppresses the default heading and adds a custom section title",
"type": "string"
},
"sign": {
"label": "Signature",
"description": "Suppresses the signature if set to no",
"type": "boolean"
}
},
"description": "The templates should always be substituted! This template begins a discussion about a controversial or a potentially controversial move. It must be used on the talk page.",
"format": "inline",
"paramOrder": [
"1",
"reason",
"heading",
"sign"
]
}
</templatedata>
==See also==
*{{tl|RM notice}}
*{{tls|RMassist}}
*{{tl|Rename media}}
*{{tls|Requested move/end}}
*{{tl|Old move}}, for listing previous RMs on talk pages
*[[Wikipedia:Template messages/Moving]]
*[[Wikipedia:Requested moves]]
*[[Wikipedia:Categories for discussion]]
<includeonly>{{Sandbox other||
<!-- Categories below this line, please; interwikis at Wikidata -->
[[Category:Wikipedia page-name maintenance templates]]
}}</includeonly>
r1vj35kf9rfrcke3hzuyzne5oqqkion
ಟೆಂಪ್ಲೇಟ್:Move
10
27113
360824
2025-06-05T19:05:07Z
en>Hyphenation Expert
0
Undid revision [[Special:Diff/1294112475|1294112475]] by [[Special:Contributions/NoahJohnsen|NoahJohnsen]] ([[User talk:NoahJohnsen|talk]])
360824
wikitext
text/x-wiki
#Redirect [[Template:Requested move]]
{{Redirect category shell|1=
{{Redirect from move}}
{{Redirect from template shortcut}}
}}
oa7sjkleoh3e8tfpjbvftlnvfl3eivn
360825
360824
2026-05-18T04:27:19Z
ChiK
1136
೧ revisions imported from [[:en:Template:Move]]
360824
wikitext
text/x-wiki
#Redirect [[Template:Requested move]]
{{Redirect category shell|1=
{{Redirect from move}}
{{Redirect from template shortcut}}
}}
oa7sjkleoh3e8tfpjbvftlnvfl3eivn
ಟೆಂಪ್ಲೇಟ್:Redirect from move
10
27114
360826
2022-06-29T03:58:37Z
en>Wbm1058
0
removing over-categorization (via [[WP:JWB]])
360826
wikitext
text/x-wiki
#REDIRECT [[Template:R from move]]
{{Redirect category shell|
{{R to redirect template}}
}}
aacge2zbygg0dvsex82kwfven8qkh40
360827
360826
2026-05-18T04:27:19Z
ChiK
1136
೧ revisions imported from [[:en:Template:Redirect_from_move]]
360826
wikitext
text/x-wiki
#REDIRECT [[Template:R from move]]
{{Redirect category shell|
{{R to redirect template}}
}}
aacge2zbygg0dvsex82kwfven8qkh40
ಟೆಂಪ್ಲೇಟ್:Redirect from template shortcut
10
27115
360828
2022-03-21T23:01:45Z
en>Redireditor
0
+R from avoided double redirect and +R from longer name
360828
wikitext
text/x-wiki
#REDIRECT [[Template:R from shortcut]]
{{Redirect category shell|
{{R avoided double redirect |1=Template:R from template shortcut}}
{{R from longer name |of='''{{No redirect |Template:R from template shortcut}}'''}}
{{R to redirect template}}
}}
gka0upfe3jkvvz4isijytoh6ti8euop
360829
360828
2026-05-18T04:27:19Z
ChiK
1136
೧ revisions imported from [[:en:Template:Redirect_from_template_shortcut]]
360828
wikitext
text/x-wiki
#REDIRECT [[Template:R from shortcut]]
{{Redirect category shell|
{{R avoided double redirect |1=Template:R from template shortcut}}
{{R from longer name |of='''{{No redirect |Template:R from template shortcut}}'''}}
{{R to redirect template}}
}}
gka0upfe3jkvvz4isijytoh6ti8euop
ಟೆಂಪ್ಲೇಟ್:Redirect-confused
10
27116
360836
2014-08-27T12:53:56Z
en>It Is Me Here
0
#REDIRECT [[Template:Redirect-distinguish]]
360836
wikitext
text/x-wiki
#REDIRECT [[Template:Redirect-distinguish]]
rl7owu3ry96u93iblexdp2gvfegucsu
360837
360836
2026-05-18T04:27:32Z
ChiK
1136
೧ revisions imported from [[:en:Template:Redirect-confused]]
360836
wikitext
text/x-wiki
#REDIRECT [[Template:Redirect-distinguish]]
rl7owu3ry96u93iblexdp2gvfegucsu
ಟೆಂಪ್ಲೇಟ್:Requested move/dated/mirror
10
27117
360838
2024-07-10T01:07:37Z
en>Jonesey95
0
fix grammar per talk page
360838
wikitext
text/x-wiki
{{ {{{|safesubst:}}}ifsubst| {{error|Don't subst {{tlx|Requested move/dated}}. See [[WP:RM/CM]] for instructions on how to request moves.}}[[Category:Pages with incorrectly substituted templates]] |
<!--the #reqmovetag anchor is added via a span tag similar to how {{Rfctag}} adds #rfctag so that the ombox can be "section"-linked to without necessarily knowing the sub-section's name-->
<span id{{=}}"reqmovetag"></span>{{#switch:{{SUBJECTSPACE}}
|Category={{error|[[Template:Requested move/dated]] is not for categories. See [[Wikipedia:Categories for discussion]] instead}}
|File={{error|[[Template:Requested move/dated]] is not for files, see [[Wikipedia:Moving a page#Moving a file page]] (use [[template:Rename media]] instead)}}
|User={{error|[[Template:Requested move/dated]] is not for moves from user space, see [[Wikipedia:Articles for creation]] (use {{tls|submit}} instead), or [[Help:How to move a page|move it yourself]]}}
|Wikipedia={{#ifeq:{{BASEPAGENAME}}|Requested moves/Log||}}
|#default= }}
{{#ifeq:{{BASEPAGENAME}}|Requested moves/Log|----<br><!--don't show the template on Requested moves/Log pages-->|
{{#ifeq:{{{multiple}}}|yes|{{#ifeq:{{{new1|}}}||{{error|Parameter ''new1'' must be specified}}||}}|}}
{{Tmbox
|imageright = {{#ifeq:{{{{{#ifeq:{{{multiple}}}|yes|new1|1}}|}}}|?
|[[File:Symbol question.svg|40px]]
}}
|type = move
|text = {{#ifeq:{{{new1|{{{1}}}}}}|{{SUBJECTPAGENAME}}
|'''The request to rename this article to [[{{{new1|{{{1}}}}}}]] has been carried out.'''
----
If the page title has consensus, be sure to close this discussion using {{nowrap|{{tlsx|RM top|<nowiki>'''</nowiki>page moved<nowiki>'''</nowiki>.}}}} and {{nowrap|{{tlsx|RM bottom}}}} and remove the {{nowrap|{{tlx|Requested move/dated|…}}}} tag, or replace it with the {{nowrap|{{tls|Requested move/end|…}}}} tag.[[Category:Fulfilled page move requests]]
|'''It has been proposed in this section that {{#ifeq:{{{multiple}}}|yes|{{#ifeq:{{{current2|}}}||[[:{{{current1|}}}]]|multiple pages}}|[[:{{ARTICLEPAGENAME}}]]}} be [[Wikipedia:Moving a page|renamed and moved]]{{#ifeq:{{{{{#ifeq:{{{multiple}}}|yes|new1|1}}|}}}|?| somewhere else, with the name{{#ifeq:{{{multiple}}}|yes|s|}} being decided below|{{#ifeq:{{{multiple}}}|yes|| to {{no redirect|{{{1|{{error|New name must be specified}}}}}}}}}}}.'''<br>{{#ifeq:{{{1}}}|?||{{#ifeq:{{{multiple}}}|yes||{{#ifeq:{{NAMESPACE:{{ARTICLEPAGENAME}}}}|{{NAMESPACE:{{{1}}}}}||<small style="line-height:1.2em;">''This proposal is for a cross-namespace move from {{#ifeq:{{NAMESPACE:{{ARTICLEPAGENAME}}}}||(Main/Article)|{{NAMESPACE:{{ARTICLEPAGENAME}}}}}} to {{#ifeq:{{NAMESPACE:{{{1}}}}}||(Main/Article)|{{NAMESPACE:{{{1}}}}}}} [[WP:Namespace|namespace]].''</small>}}}}}}
----
A {{no ping|RMCD bot|label1=bot}} will list this discussion on the [[Wikipedia:Requested moves|requested moves]] current discussions [[Wikipedia:Requested moves/Current discussions|subpage]] within an hour of this tag being placed. The discussion may be closed 7 days after being opened, if consensus has been reached (see the [[Wikipedia:Requested moves/Closing instructions|closing instructions]]). Please base arguments on [[Wikipedia:Article titles#Deciding on an article title|article title policy]], and keep discussion [[Wikipedia:Too long; didn't read|succinct]] and [[Wikipedia:Civility|civil]].
----
<small style="line-height:1.2em;">''Please use {{Tlxs|requested move}}. Do '''not''' use {{Tlx|requested move/dated}} directly.'' </small>{{#ifeq:{{{multiple}}}|yes| <div class="floatright"><small style="line-height:1.2em;">''Links:'' [{{fullurl:Special:Log/move|page={{Urlencode:{{{current1}}}}}}} current log] {{#ifeq:{{{new1}}}|?|| • [{{fullurl:Special:Log/move|page={{Urlencode:{{{new1}}}}}}} target log] • [{{fullurl:Special:MovePage|wpOldTitle={{Urlencode:{{{current1}}}}}&wpNewTitle={{Urlencode:{{{new1}}}}}&wpReason={{Urlencode:[[Wikipedia:Requested moves|requested move]]; see [[{{TALKPAGENAME:{{{new1}}}}}]]}}&wpMovetalk=1}} direct move]}}</small></div> | <div class="floatright"><small style="line-height:1.2em;">''Links:'' [{{fullurl:Special:Log/move|page={{Urlencode:{{ARTICLEPAGENAME}}}}}} current log] {{#ifeq:{{{1}}}|?|| • [{{fullurl:Special:Log/move|page={{Urlencode:{{{1}}}}}}} target log] • [{{fullurl:Special:MovePage|wpOldTitle={{Urlencode:{{ARTICLEPAGENAME}}}}&wpNewTitle={{Urlencode:{{{1}}}}}&wpReason={{Urlencode:[[Wikipedia:Requested moves|requested move]]; see [[{{TALKPAGENAME:{{{1}}}}}]]}}&wpMovetalk=1}} direct move]}}</small></div>}}
}}{{category handler
|all=[[Category:Requested moves|{{{sort|}}}{{PAGENAME}}]]
|nocat=true
|category2={{{category|¬}}}
}}
}}
}}
}}<noinclude>
{{documentation}}
<!-- Categories go on the /doc subpage, and interwikis go on Wikidata. -->
</noinclude>
o2pch0cnm54ioxe7n2fbrbgqfx594fo
360839
360838
2026-05-18T04:27:32Z
ChiK
1136
೧ revisions imported from [[:en:Template:Requested_move/dated/mirror]]
360838
wikitext
text/x-wiki
{{ {{{|safesubst:}}}ifsubst| {{error|Don't subst {{tlx|Requested move/dated}}. See [[WP:RM/CM]] for instructions on how to request moves.}}[[Category:Pages with incorrectly substituted templates]] |
<!--the #reqmovetag anchor is added via a span tag similar to how {{Rfctag}} adds #rfctag so that the ombox can be "section"-linked to without necessarily knowing the sub-section's name-->
<span id{{=}}"reqmovetag"></span>{{#switch:{{SUBJECTSPACE}}
|Category={{error|[[Template:Requested move/dated]] is not for categories. See [[Wikipedia:Categories for discussion]] instead}}
|File={{error|[[Template:Requested move/dated]] is not for files, see [[Wikipedia:Moving a page#Moving a file page]] (use [[template:Rename media]] instead)}}
|User={{error|[[Template:Requested move/dated]] is not for moves from user space, see [[Wikipedia:Articles for creation]] (use {{tls|submit}} instead), or [[Help:How to move a page|move it yourself]]}}
|Wikipedia={{#ifeq:{{BASEPAGENAME}}|Requested moves/Log||}}
|#default= }}
{{#ifeq:{{BASEPAGENAME}}|Requested moves/Log|----<br><!--don't show the template on Requested moves/Log pages-->|
{{#ifeq:{{{multiple}}}|yes|{{#ifeq:{{{new1|}}}||{{error|Parameter ''new1'' must be specified}}||}}|}}
{{Tmbox
|imageright = {{#ifeq:{{{{{#ifeq:{{{multiple}}}|yes|new1|1}}|}}}|?
|[[File:Symbol question.svg|40px]]
}}
|type = move
|text = {{#ifeq:{{{new1|{{{1}}}}}}|{{SUBJECTPAGENAME}}
|'''The request to rename this article to [[{{{new1|{{{1}}}}}}]] has been carried out.'''
----
If the page title has consensus, be sure to close this discussion using {{nowrap|{{tlsx|RM top|<nowiki>'''</nowiki>page moved<nowiki>'''</nowiki>.}}}} and {{nowrap|{{tlsx|RM bottom}}}} and remove the {{nowrap|{{tlx|Requested move/dated|…}}}} tag, or replace it with the {{nowrap|{{tls|Requested move/end|…}}}} tag.[[Category:Fulfilled page move requests]]
|'''It has been proposed in this section that {{#ifeq:{{{multiple}}}|yes|{{#ifeq:{{{current2|}}}||[[:{{{current1|}}}]]|multiple pages}}|[[:{{ARTICLEPAGENAME}}]]}} be [[Wikipedia:Moving a page|renamed and moved]]{{#ifeq:{{{{{#ifeq:{{{multiple}}}|yes|new1|1}}|}}}|?| somewhere else, with the name{{#ifeq:{{{multiple}}}|yes|s|}} being decided below|{{#ifeq:{{{multiple}}}|yes|| to {{no redirect|{{{1|{{error|New name must be specified}}}}}}}}}}}.'''<br>{{#ifeq:{{{1}}}|?||{{#ifeq:{{{multiple}}}|yes||{{#ifeq:{{NAMESPACE:{{ARTICLEPAGENAME}}}}|{{NAMESPACE:{{{1}}}}}||<small style="line-height:1.2em;">''This proposal is for a cross-namespace move from {{#ifeq:{{NAMESPACE:{{ARTICLEPAGENAME}}}}||(Main/Article)|{{NAMESPACE:{{ARTICLEPAGENAME}}}}}} to {{#ifeq:{{NAMESPACE:{{{1}}}}}||(Main/Article)|{{NAMESPACE:{{{1}}}}}}} [[WP:Namespace|namespace]].''</small>}}}}}}
----
A {{no ping|RMCD bot|label1=bot}} will list this discussion on the [[Wikipedia:Requested moves|requested moves]] current discussions [[Wikipedia:Requested moves/Current discussions|subpage]] within an hour of this tag being placed. The discussion may be closed 7 days after being opened, if consensus has been reached (see the [[Wikipedia:Requested moves/Closing instructions|closing instructions]]). Please base arguments on [[Wikipedia:Article titles#Deciding on an article title|article title policy]], and keep discussion [[Wikipedia:Too long; didn't read|succinct]] and [[Wikipedia:Civility|civil]].
----
<small style="line-height:1.2em;">''Please use {{Tlxs|requested move}}. Do '''not''' use {{Tlx|requested move/dated}} directly.'' </small>{{#ifeq:{{{multiple}}}|yes| <div class="floatright"><small style="line-height:1.2em;">''Links:'' [{{fullurl:Special:Log/move|page={{Urlencode:{{{current1}}}}}}} current log] {{#ifeq:{{{new1}}}|?|| • [{{fullurl:Special:Log/move|page={{Urlencode:{{{new1}}}}}}} target log] • [{{fullurl:Special:MovePage|wpOldTitle={{Urlencode:{{{current1}}}}}&wpNewTitle={{Urlencode:{{{new1}}}}}&wpReason={{Urlencode:[[Wikipedia:Requested moves|requested move]]; see [[{{TALKPAGENAME:{{{new1}}}}}]]}}&wpMovetalk=1}} direct move]}}</small></div> | <div class="floatright"><small style="line-height:1.2em;">''Links:'' [{{fullurl:Special:Log/move|page={{Urlencode:{{ARTICLEPAGENAME}}}}}} current log] {{#ifeq:{{{1}}}|?|| • [{{fullurl:Special:Log/move|page={{Urlencode:{{{1}}}}}}} target log] • [{{fullurl:Special:MovePage|wpOldTitle={{Urlencode:{{ARTICLEPAGENAME}}}}&wpNewTitle={{Urlencode:{{{1}}}}}&wpReason={{Urlencode:[[Wikipedia:Requested moves|requested move]]; see [[{{TALKPAGENAME:{{{1}}}}}]]}}&wpMovetalk=1}} direct move]}}</small></div>}}
}}{{category handler
|all=[[Category:Requested moves|{{{sort|}}}{{PAGENAME}}]]
|nocat=true
|category2={{{category|¬}}}
}}
}}
}}
}}<noinclude>
{{documentation}}
<!-- Categories go on the /doc subpage, and interwikis go on Wikidata. -->
</noinclude>
o2pch0cnm54ioxe7n2fbrbgqfx594fo
ಟೆಂಪ್ಲೇಟ್:Redirect-distinguish/doc
10
27118
360844
2025-11-02T00:49:25Z
2600:8802:3712:5100:8427:B9AC:90E1:1F47
360844
wikitext
text/x-wiki
{{Documentation subpage}}
{{High-use}}
{{Template shortcut|Redir-dist}}
<!-- PLEASE ADD CATEGORIES AND INTERWIKIS AT THE BOTTOM OF THIS PAGE -->
{{Lua|Module:Redirect-distinguish}}
This [[Wikipedia:Hatnote|hatnote]] is generally used when an article's title has an ambiguity that is not necessarily literal, but one that would likely happen with enough readers to warrant a hatnote (e.g., homophones). Be careful to [[WP:TRHAT|avoid trivial uses]].
* {{tlx|Redirect-distinguish|REDIRECT|PAGE1}} → {{Redirect-distinguish|REDIRECT|PAGE1}}
* {{tlx|Redirect-distinguish|REDIRECT|PAGE1|PAGE2|PAGE3|PAGE4}} → {{Redirect-distinguish|REDIRECT|PAGE1|PAGE2|PAGE3|PAGE4}}
When the ambiguity is more literal (e.g., acronyms), consider using {{tlx|Redirect-synonym}}, instead.
== TemplateData ==
{{TemplateData header}}
<templatedata>
{
"params": {
"1": {
"label": "Redirecting page",
"description": "Name of page that redirects here",
"type": "wiki-page-name",
"required": true
},
"2": {
"label": "Use 1",
"description": "1st other use",
"type": "wiki-page-name",
"required": true
},
"3": {
"label": "Use 2",
"description": "2nd other use",
"type": "wiki-page-name"
},
"4": {
"label": "Use 3",
"description": "3rd other use",
"type": "wiki-page-name"
},
"5": {
"label": "Use 4",
"description": "4th other use",
"type": "wiki-page-name"
},
"6": {
"label": "Use 5",
"description": "5th other use",
"type": "wiki-page-name"
},
"7": {
"label": "Use 6",
"description": "6th other use",
"type": "wiki-page-name"
},
"8": {
"label": "Use 7",
"description": "7th other use",
"type": "wiki-page-name"
},
"9": {
"label": "Use 8",
"description": "8th other use",
"type": "wiki-page-name"
},
"10": {
"label": "Use 9",
"description": "9th other use",
"type": "wiki-page-name"
}
},
"description": "Indicates that a page is not to be confused with other pages. This template supports unlimited arguments.",
"format": "inline"
}
</templatedata>
==See also==
*{{tl|Redirect}}
{{Hatnote templates}}
<includeonly>{{sandbox other||
<!-- CATEGORIES AND INTERWIKIS HERE, THANKS -->
[[Category:Disambiguation and redirection hatnote templates]]
[[cy:Nodyn:Redirect-distinguish]]
}}</includeonly>
n60s6yacb10mmiu8ekbku1sg8xc2z6z
360845
360844
2026-05-18T04:30:10Z
ChiK
1136
೧ revisions imported from [[:en:Template:Redirect-distinguish/doc]]
360844
wikitext
text/x-wiki
{{Documentation subpage}}
{{High-use}}
{{Template shortcut|Redir-dist}}
<!-- PLEASE ADD CATEGORIES AND INTERWIKIS AT THE BOTTOM OF THIS PAGE -->
{{Lua|Module:Redirect-distinguish}}
This [[Wikipedia:Hatnote|hatnote]] is generally used when an article's title has an ambiguity that is not necessarily literal, but one that would likely happen with enough readers to warrant a hatnote (e.g., homophones). Be careful to [[WP:TRHAT|avoid trivial uses]].
* {{tlx|Redirect-distinguish|REDIRECT|PAGE1}} → {{Redirect-distinguish|REDIRECT|PAGE1}}
* {{tlx|Redirect-distinguish|REDIRECT|PAGE1|PAGE2|PAGE3|PAGE4}} → {{Redirect-distinguish|REDIRECT|PAGE1|PAGE2|PAGE3|PAGE4}}
When the ambiguity is more literal (e.g., acronyms), consider using {{tlx|Redirect-synonym}}, instead.
== TemplateData ==
{{TemplateData header}}
<templatedata>
{
"params": {
"1": {
"label": "Redirecting page",
"description": "Name of page that redirects here",
"type": "wiki-page-name",
"required": true
},
"2": {
"label": "Use 1",
"description": "1st other use",
"type": "wiki-page-name",
"required": true
},
"3": {
"label": "Use 2",
"description": "2nd other use",
"type": "wiki-page-name"
},
"4": {
"label": "Use 3",
"description": "3rd other use",
"type": "wiki-page-name"
},
"5": {
"label": "Use 4",
"description": "4th other use",
"type": "wiki-page-name"
},
"6": {
"label": "Use 5",
"description": "5th other use",
"type": "wiki-page-name"
},
"7": {
"label": "Use 6",
"description": "6th other use",
"type": "wiki-page-name"
},
"8": {
"label": "Use 7",
"description": "7th other use",
"type": "wiki-page-name"
},
"9": {
"label": "Use 8",
"description": "8th other use",
"type": "wiki-page-name"
},
"10": {
"label": "Use 9",
"description": "9th other use",
"type": "wiki-page-name"
}
},
"description": "Indicates that a page is not to be confused with other pages. This template supports unlimited arguments.",
"format": "inline"
}
</templatedata>
==See also==
*{{tl|Redirect}}
{{Hatnote templates}}
<includeonly>{{sandbox other||
<!-- CATEGORIES AND INTERWIKIS HERE, THANKS -->
[[Category:Disambiguation and redirection hatnote templates]]
[[cy:Nodyn:Redirect-distinguish]]
}}</includeonly>
n60s6yacb10mmiu8ekbku1sg8xc2z6z
ಟೆಂಪ್ಲೇಟ್ ಪಾತೆರ:Redirect-distinguish
11
27119
360846
2025-07-15T21:52:37Z
en>Faster than Thunder
0
Comment
360846
wikitext
text/x-wiki
{{WikiProject banner shell|
{{WikiProject Redirect}}
}}
{{copied|from1=Template:Redirect-distinguish|from_oldid1=719847699|to1=:incubator:Template:Wp/nod/redirect-distinguish|to_diff1=4241327
|from2=Template:Redirect-distinguish/doc|from_oldid2=826318585
|to2=:incubator:Template:Wp/nod/redirect-distinguish/doc|to_diff2=4241771}}
==Phrasing==
"It is not to be confused with" would be simpler stated as, "It should not be confused with". This would not make Wikipedia any less accurate, but would make it more accessible to non-native English speakers, for whom "not to be confused" is a construct they might not have seen before. [[User:Jra|Jra]] ([[User talk:Jra|talk]]) 00:30, 3 January 2012 (UTC)
:It is phrased as such to parallel the phrasing used by {{tl|distinguish}}. I would recommend bringing this issue up on [[Template talk:Distinguish]]. --[[User:Cybercobra|<b style="color:#3773A5;">Cyber</b><span style="color:#FFB521;">cobra</span>]] [[User talk:Cybercobra|(talk)]] 20:08, 8 April 2012 (UTC)
*The "It is" part of the [[template:redirect-distinguish]] is awkward and superfluous. For instance, I went to [[Domino's]]. It says, "''"Domino's" redirects here. It is not to be confused with Dominoes.''" But why can't it just say, "''"Domino's" redirects here. '''Not''' to be confused with Dominoes.''"? I feel like that would be better and more consistent with the rest of the "not to be confused with" sentences this template creates. [[User:Agnosticaphid|<span style="color:DarkGreen;">AgnosticAphid</span>]] [[User talk:agnosticaphid|talk]] 00:46, 20 July 2013 (UTC)
: Edit:Plus, it seems like if we were really going to keep the current phrasing that it would be better to specify that "it" refers to the article title, not the redirected term. I guess I'm trying to say that the phrasing is also a bit confusing now because "it" refers to a subject that isn't even clearly stated. [[User:Agnosticaphid|<span style="color:DarkGreen;">AgnosticAphid</span>]] [[User talk:agnosticaphid|talk]] 01:00, 20 July 2013 (UTC)
*Hi. I am afraid I do not share the same concern with {{u|Jra}} or {{u|Agnosticaphid}}. First, non-native English speakers will have lots of troubles involving second language acquisition; trying to help them this way is so futile that reminds me of comedy film: a man who cared a lot about his suit removed a strand of hair from his sleeve just as he had done a couple of time before... only this time, he was covered in mud and some white sticky substance.
:As for the "it is" part, removing that phrase turns the sentence into a fragment with a period at the end! So, this proposal basically turns a grammatically correct sentence into a grammatically incorrect one. I am afraid, Agnosticaphid, you just have to get over your feeling of awkwardness. Emotions are not good masters.
:Best regards,
:[[User:Codename Lisa|Codename Lisa]] ([[User talk:Codename Lisa|talk]]) 13:38, 23 November 2013 (UTC)
:: Well, the main template just says "not to be confused with X." So I don't see how changing the second sentence of the redirect-distinguish template to match that is so terrible, even if it is technically a fragment. It's apparently understandable enough not to have caused any problems! '''[[User:Agnosticaphid|<span style="color:DarkGreen;">AgnosticAphid</span>]]''' [[User talk:agnosticaphid|talk]] 17:12, 30 November 2013 (UTC)
::: Hi. [[WP:OSE|Other stuff exists]] is one of my least favorite fallacious discussions; are you using it to justify introducing a grammatical error into a temple? I'm afraid my answer is still "No". Templates are not supposed to rhyme or look consistent without a significant benefit-to-cost ratio. Best regards, [[User:Codename Lisa|Codename Lisa]] ([[User talk:Codename Lisa|talk]]) 18:28, 30 November 2013 (UTC)
:::: Okay, well, first of all, it's not like I pointed to some other random unrelated template that is a fragment and said "LOOKIE HERE IT MUST BE FINE," I pointed to the '''exact same text that is used in a nearly identical template.''' Also, who said anything about rhyming; it's a bit ironic that you called ''my'' statement fallacious. At any rate, consistency is not the be-all-end-all of wikipedia, but surely it has some value with two templates that serve nearly identical purposes and are used in nearly identical situations. What I was trying to say is that if the "Not to be confused with..." phrasing was as much of a grammatical affront as you claim, surely someone else would have commented about it given how much more widely the distinguish template is used than the redirect-distinguish template.
:::: Second, I think that you're just wrong on the grammar: the implied "the title of this article should" in "not to be confused with" is just as fine as many other grammatically proper and complete sentences with implied subjects like "[I am] just kidding!" or "[You] take out the trash!" It also seems to me that implied subjects are actually particularly ''common'' in imperative sentences like those two examples and the template text we're discussing. If you read the [[subject (grammar)]] article, you will see that "implied" or "zero subjects" are actual things and they don't convert sentences into fragments. Because "not to be confused with..." has a subject (the title of the article in question, which is implied), an object (the title you shouldn't mix that up with), and a verb (confuse), I think it's fine. Removing the "it is" is also substantially less awkward, and "it is" doesn't add anything to the sentence, at all. So if your only objection is that the grammar is wrong, I'd respectfully ask you to reconsider.
::::Third, the "it is" is also problematic because that phrasing raises confused about what "it" refers to. When I read in the "Dominos" article ""''"Domino's" redirects here. It is not to be confused with Dominoes''", does the "it" refer to "Dominos" or "Domino's"? Who can say? At least if we just say "not to be confused with dominoes" it seems slightly more clear to me that the "not to be confused with..." text refers to the article title and not the redirected term. '''[[User:Agnosticaphid|<span style="color:DarkGreen;">AgnosticAphid</span>]]''' [[User talk:agnosticaphid|talk]] 00:55, 6 December 2013 (UTC)
:::* I've slightly reconsidered my position. While I still think the "it is" is a stylistic abomination, I've come to the conclusion that there's really no reason to use a template that includes the words "not to be confused with..." at all. It's vague and there are a bevy of more appropriate templates, such as ''This page is about USE1. For USE2, see PAGE2.'' or ''For OTHER TOPIC, see PAGE1'' or ''For other people titled NAME, see PAGE.'' or ''"REDIRECT" redirects here. For other uses, see REDIRECT (disambiguation).'' More complete thoughts here: [https://en.wikipedia.org/w/index.php?title=Template_talk:Distinguish&curid=3406022&diff=584925759&oldid=582913282] '''[[User:Agnosticaphid|<span style="color:DarkGreen;">AgnosticAphid</span>]]''' [[User talk:agnosticaphid|talk]] 00:32, 7 December 2013 (UTC)
::::*Hi.
:::::At this time, there is no policy that supports abolishing anything on the grounds that one or two editors ''feel'' awkward about them. If you don't like them, you just have to grin and bear, unless a community-wide consensus against them is formed. Or, maybe you should study [[MOS:STABILITY]]. I myself am okay with all of these templates and I don't ''feel'' anything to be ''abominable'' in them.
:::::Best regards,
:::::[[User:Codename Lisa|Codename Lisa]] ([[User talk:Codename Lisa|talk]]) 03:34, 7 December 2013 (UTC)
{{outdent2}} I was going to ask just this! I think that “It is not to be confused with” is incredibly awkward.<br><span style="font-family:Papyrus;"><span style="color:#0020C2;">―</span><b>[[User:PapiDimmi|<span style="color:#0000A0;">PapíDimmi</span>]]</b> <small><span style="color:#571B7E;">(</span><b>[[User talk:PapiDimmi|<span style="color:#4AA02C;">talk</span>]] | [[Special:Contributions/PapiDimmi|<span style="color:#4AA02C;">contribs</span>]]</b><span style="color:#571B7E;">)</span></small></span> 11:00, 9 May 2017 (UTC)
:"Should not be confused with" is instructive.
:"Is not to be confused with" is declarative.
:In my view, the tone of the declarative option is freer of implied value judgement (no matter how subtle), and could fit better on an encyclopaedia.
:[[User:Intralexical|Intralexical]] ([[User talk:Intralexical|talk]]) 19:32, 6 February 2021 (UTC)
:Related discussion [[Template_talk:About-distinguish#Not_prefixing_"Not"_with_"It_is"]]. [[User:Fgnievinski|fgnievinski]] ([[User talk:Fgnievinski|talk]]) 15:19, 1 July 2023 (UTC)
:I know this thread is ancient, but I wanted to voice my strong opposition to the current wording in case of any future discussions. The argument is correct that imperative sentences typically omit the subject; however, this is not an imperative sentence. If we want it to be imperative and thus properly subjectless, we could change it to "Do not confuse it with…", but that sounds rather condescending to my ears.
:Not only do we require a subject when not in the imperative mood, but we also often use [[Dummy pronoun#Dummy subjects|dummy subjects]], which lack explicit meanings. So, while it is not technically known whether "it" refers to the article title or redirect title (although I would contend that readers are smart enough to discern that it's referring to the most similar term—and, often, the article and redirect titles are so similar [eg Dominos/Domino's] that it doesn't matter whether it refers to either or even both), it doesn't even matter if the "it" refers to nothing! Readers are perfectly comfortable with constructions like "It is unknown whether the event happened or not."
:As it stands, this template features a complete sentence with a full stop, then a fragment with a full stop. Alone, a fragment with a full stop à la {{tl|Distinguish}} reads fine; here, following a complete sentence, it is deeply jarring. [[User:Jjamesryan|Jjamesryan]] ([[User talk:Jjamesryan|talk]] | [[Special:Contributions/Jjamesryan|contribs]]) 04:51, 9 August 2023 (UTC)
===Phrasing, again===
So, I had replaced the period for a semicolon in the middle. Later, {{u|Faster than Thunder}} merged the two sentences [https://en.wikipedia.org/w/index.php?title=Module%3ARedirect-distinguish&diff=1286603030&oldid=1278947514], which reads fine. I'm just documenting it here, because the modifications happened in a module instead of the template proper. [[User:Fgnievinski|fgnievinski]] ([[User talk:Fgnievinski|talk]]) 21:06, 26 April 2025 (UTC)
:Eventually, the module got reverted back to using a semicolon. I prefer "''... here and is not to be confused ...''" because it is a complete sentence and makes more sense by not breaking using a semicolon. I wonder if using a semicolon is better than my phrasing. Any objection to reverting back to my phrasing (no semicolon)? '''[[User:Faster than Thunder|Faster than Thunder]] ([[User talk:Faster than Thunder|talk]] | [[Special:Contributions/Faster than Thunder|contributions]])''' <sub>[[voy:ta:|Tamil speakers: Contribute here]]</sub> 21:52, 15 July 2025 (UTC)
== Alternative pronouns ==
Is there a way to get this template, or {{tl|redirect-distinguish2}} or {{tl|redirect-distinguish6}}, to use a pronoun other than "it," for use when referring to a person or group of people? I.e. to get a result similar to that which I've written out without the template [https://en.wikipedia.org/w/index.php?title=LaPorte_Church_of_Christ&type=revision&diff=1006579929&oldid=1004052209 here], where "it" would seem odd. – [[User:Arms & Hearts|Arms & Hearts]] ([[User talk:Arms & Hearts|talk]]) 17:24, 13 February 2021 (UTC)
== "[[:Template:Distinguish redirect]]" listed at [[Wikipedia:Redirects for discussion|Redirects for discussion]] ==
[[File:Information.svg|30px]]
The redirect <span class="plainlinks">[//en.wikipedia.org/w/index.php?title=Template:Distinguish_redirect&redirect=no Template:Distinguish redirect]</span> has been listed at [[Wikipedia:Redirects for discussion|redirects for discussion]] to determine whether its use and function meets the [[Wikipedia:Redirect|redirect guidelines]]. Readers of this page are welcome to comment on this redirect at '''{{slink|Wikipedia:Redirects for discussion/Log/2024 September 27#Template:Distinguish redirect}}''' until a consensus is reached. <!-- Template:RFDNote --> [[User:Steel1943|<span style="color: #3F00FF;">'''''Steel1943'''''</span>]] ([[User talk:Steel1943|talk]]) 01:01, 27 September 2024 (UTC)
91ksxobbzc3dln08ieoc0tv8q95jo62
360847
360846
2026-05-18T04:30:11Z
ChiK
1136
೧ revisions imported from [[:en:Template_talk:Redirect-distinguish]]
360846
wikitext
text/x-wiki
{{WikiProject banner shell|
{{WikiProject Redirect}}
}}
{{copied|from1=Template:Redirect-distinguish|from_oldid1=719847699|to1=:incubator:Template:Wp/nod/redirect-distinguish|to_diff1=4241327
|from2=Template:Redirect-distinguish/doc|from_oldid2=826318585
|to2=:incubator:Template:Wp/nod/redirect-distinguish/doc|to_diff2=4241771}}
==Phrasing==
"It is not to be confused with" would be simpler stated as, "It should not be confused with". This would not make Wikipedia any less accurate, but would make it more accessible to non-native English speakers, for whom "not to be confused" is a construct they might not have seen before. [[User:Jra|Jra]] ([[User talk:Jra|talk]]) 00:30, 3 January 2012 (UTC)
:It is phrased as such to parallel the phrasing used by {{tl|distinguish}}. I would recommend bringing this issue up on [[Template talk:Distinguish]]. --[[User:Cybercobra|<b style="color:#3773A5;">Cyber</b><span style="color:#FFB521;">cobra</span>]] [[User talk:Cybercobra|(talk)]] 20:08, 8 April 2012 (UTC)
*The "It is" part of the [[template:redirect-distinguish]] is awkward and superfluous. For instance, I went to [[Domino's]]. It says, "''"Domino's" redirects here. It is not to be confused with Dominoes.''" But why can't it just say, "''"Domino's" redirects here. '''Not''' to be confused with Dominoes.''"? I feel like that would be better and more consistent with the rest of the "not to be confused with" sentences this template creates. [[User:Agnosticaphid|<span style="color:DarkGreen;">AgnosticAphid</span>]] [[User talk:agnosticaphid|talk]] 00:46, 20 July 2013 (UTC)
: Edit:Plus, it seems like if we were really going to keep the current phrasing that it would be better to specify that "it" refers to the article title, not the redirected term. I guess I'm trying to say that the phrasing is also a bit confusing now because "it" refers to a subject that isn't even clearly stated. [[User:Agnosticaphid|<span style="color:DarkGreen;">AgnosticAphid</span>]] [[User talk:agnosticaphid|talk]] 01:00, 20 July 2013 (UTC)
*Hi. I am afraid I do not share the same concern with {{u|Jra}} or {{u|Agnosticaphid}}. First, non-native English speakers will have lots of troubles involving second language acquisition; trying to help them this way is so futile that reminds me of comedy film: a man who cared a lot about his suit removed a strand of hair from his sleeve just as he had done a couple of time before... only this time, he was covered in mud and some white sticky substance.
:As for the "it is" part, removing that phrase turns the sentence into a fragment with a period at the end! So, this proposal basically turns a grammatically correct sentence into a grammatically incorrect one. I am afraid, Agnosticaphid, you just have to get over your feeling of awkwardness. Emotions are not good masters.
:Best regards,
:[[User:Codename Lisa|Codename Lisa]] ([[User talk:Codename Lisa|talk]]) 13:38, 23 November 2013 (UTC)
:: Well, the main template just says "not to be confused with X." So I don't see how changing the second sentence of the redirect-distinguish template to match that is so terrible, even if it is technically a fragment. It's apparently understandable enough not to have caused any problems! '''[[User:Agnosticaphid|<span style="color:DarkGreen;">AgnosticAphid</span>]]''' [[User talk:agnosticaphid|talk]] 17:12, 30 November 2013 (UTC)
::: Hi. [[WP:OSE|Other stuff exists]] is one of my least favorite fallacious discussions; are you using it to justify introducing a grammatical error into a temple? I'm afraid my answer is still "No". Templates are not supposed to rhyme or look consistent without a significant benefit-to-cost ratio. Best regards, [[User:Codename Lisa|Codename Lisa]] ([[User talk:Codename Lisa|talk]]) 18:28, 30 November 2013 (UTC)
:::: Okay, well, first of all, it's not like I pointed to some other random unrelated template that is a fragment and said "LOOKIE HERE IT MUST BE FINE," I pointed to the '''exact same text that is used in a nearly identical template.''' Also, who said anything about rhyming; it's a bit ironic that you called ''my'' statement fallacious. At any rate, consistency is not the be-all-end-all of wikipedia, but surely it has some value with two templates that serve nearly identical purposes and are used in nearly identical situations. What I was trying to say is that if the "Not to be confused with..." phrasing was as much of a grammatical affront as you claim, surely someone else would have commented about it given how much more widely the distinguish template is used than the redirect-distinguish template.
:::: Second, I think that you're just wrong on the grammar: the implied "the title of this article should" in "not to be confused with" is just as fine as many other grammatically proper and complete sentences with implied subjects like "[I am] just kidding!" or "[You] take out the trash!" It also seems to me that implied subjects are actually particularly ''common'' in imperative sentences like those two examples and the template text we're discussing. If you read the [[subject (grammar)]] article, you will see that "implied" or "zero subjects" are actual things and they don't convert sentences into fragments. Because "not to be confused with..." has a subject (the title of the article in question, which is implied), an object (the title you shouldn't mix that up with), and a verb (confuse), I think it's fine. Removing the "it is" is also substantially less awkward, and "it is" doesn't add anything to the sentence, at all. So if your only objection is that the grammar is wrong, I'd respectfully ask you to reconsider.
::::Third, the "it is" is also problematic because that phrasing raises confused about what "it" refers to. When I read in the "Dominos" article ""''"Domino's" redirects here. It is not to be confused with Dominoes''", does the "it" refer to "Dominos" or "Domino's"? Who can say? At least if we just say "not to be confused with dominoes" it seems slightly more clear to me that the "not to be confused with..." text refers to the article title and not the redirected term. '''[[User:Agnosticaphid|<span style="color:DarkGreen;">AgnosticAphid</span>]]''' [[User talk:agnosticaphid|talk]] 00:55, 6 December 2013 (UTC)
:::* I've slightly reconsidered my position. While I still think the "it is" is a stylistic abomination, I've come to the conclusion that there's really no reason to use a template that includes the words "not to be confused with..." at all. It's vague and there are a bevy of more appropriate templates, such as ''This page is about USE1. For USE2, see PAGE2.'' or ''For OTHER TOPIC, see PAGE1'' or ''For other people titled NAME, see PAGE.'' or ''"REDIRECT" redirects here. For other uses, see REDIRECT (disambiguation).'' More complete thoughts here: [https://en.wikipedia.org/w/index.php?title=Template_talk:Distinguish&curid=3406022&diff=584925759&oldid=582913282] '''[[User:Agnosticaphid|<span style="color:DarkGreen;">AgnosticAphid</span>]]''' [[User talk:agnosticaphid|talk]] 00:32, 7 December 2013 (UTC)
::::*Hi.
:::::At this time, there is no policy that supports abolishing anything on the grounds that one or two editors ''feel'' awkward about them. If you don't like them, you just have to grin and bear, unless a community-wide consensus against them is formed. Or, maybe you should study [[MOS:STABILITY]]. I myself am okay with all of these templates and I don't ''feel'' anything to be ''abominable'' in them.
:::::Best regards,
:::::[[User:Codename Lisa|Codename Lisa]] ([[User talk:Codename Lisa|talk]]) 03:34, 7 December 2013 (UTC)
{{outdent2}} I was going to ask just this! I think that “It is not to be confused with” is incredibly awkward.<br><span style="font-family:Papyrus;"><span style="color:#0020C2;">―</span><b>[[User:PapiDimmi|<span style="color:#0000A0;">PapíDimmi</span>]]</b> <small><span style="color:#571B7E;">(</span><b>[[User talk:PapiDimmi|<span style="color:#4AA02C;">talk</span>]] | [[Special:Contributions/PapiDimmi|<span style="color:#4AA02C;">contribs</span>]]</b><span style="color:#571B7E;">)</span></small></span> 11:00, 9 May 2017 (UTC)
:"Should not be confused with" is instructive.
:"Is not to be confused with" is declarative.
:In my view, the tone of the declarative option is freer of implied value judgement (no matter how subtle), and could fit better on an encyclopaedia.
:[[User:Intralexical|Intralexical]] ([[User talk:Intralexical|talk]]) 19:32, 6 February 2021 (UTC)
:Related discussion [[Template_talk:About-distinguish#Not_prefixing_"Not"_with_"It_is"]]. [[User:Fgnievinski|fgnievinski]] ([[User talk:Fgnievinski|talk]]) 15:19, 1 July 2023 (UTC)
:I know this thread is ancient, but I wanted to voice my strong opposition to the current wording in case of any future discussions. The argument is correct that imperative sentences typically omit the subject; however, this is not an imperative sentence. If we want it to be imperative and thus properly subjectless, we could change it to "Do not confuse it with…", but that sounds rather condescending to my ears.
:Not only do we require a subject when not in the imperative mood, but we also often use [[Dummy pronoun#Dummy subjects|dummy subjects]], which lack explicit meanings. So, while it is not technically known whether "it" refers to the article title or redirect title (although I would contend that readers are smart enough to discern that it's referring to the most similar term—and, often, the article and redirect titles are so similar [eg Dominos/Domino's] that it doesn't matter whether it refers to either or even both), it doesn't even matter if the "it" refers to nothing! Readers are perfectly comfortable with constructions like "It is unknown whether the event happened or not."
:As it stands, this template features a complete sentence with a full stop, then a fragment with a full stop. Alone, a fragment with a full stop à la {{tl|Distinguish}} reads fine; here, following a complete sentence, it is deeply jarring. [[User:Jjamesryan|Jjamesryan]] ([[User talk:Jjamesryan|talk]] | [[Special:Contributions/Jjamesryan|contribs]]) 04:51, 9 August 2023 (UTC)
===Phrasing, again===
So, I had replaced the period for a semicolon in the middle. Later, {{u|Faster than Thunder}} merged the two sentences [https://en.wikipedia.org/w/index.php?title=Module%3ARedirect-distinguish&diff=1286603030&oldid=1278947514], which reads fine. I'm just documenting it here, because the modifications happened in a module instead of the template proper. [[User:Fgnievinski|fgnievinski]] ([[User talk:Fgnievinski|talk]]) 21:06, 26 April 2025 (UTC)
:Eventually, the module got reverted back to using a semicolon. I prefer "''... here and is not to be confused ...''" because it is a complete sentence and makes more sense by not breaking using a semicolon. I wonder if using a semicolon is better than my phrasing. Any objection to reverting back to my phrasing (no semicolon)? '''[[User:Faster than Thunder|Faster than Thunder]] ([[User talk:Faster than Thunder|talk]] | [[Special:Contributions/Faster than Thunder|contributions]])''' <sub>[[voy:ta:|Tamil speakers: Contribute here]]</sub> 21:52, 15 July 2025 (UTC)
== Alternative pronouns ==
Is there a way to get this template, or {{tl|redirect-distinguish2}} or {{tl|redirect-distinguish6}}, to use a pronoun other than "it," for use when referring to a person or group of people? I.e. to get a result similar to that which I've written out without the template [https://en.wikipedia.org/w/index.php?title=LaPorte_Church_of_Christ&type=revision&diff=1006579929&oldid=1004052209 here], where "it" would seem odd. – [[User:Arms & Hearts|Arms & Hearts]] ([[User talk:Arms & Hearts|talk]]) 17:24, 13 February 2021 (UTC)
== "[[:Template:Distinguish redirect]]" listed at [[Wikipedia:Redirects for discussion|Redirects for discussion]] ==
[[File:Information.svg|30px]]
The redirect <span class="plainlinks">[//en.wikipedia.org/w/index.php?title=Template:Distinguish_redirect&redirect=no Template:Distinguish redirect]</span> has been listed at [[Wikipedia:Redirects for discussion|redirects for discussion]] to determine whether its use and function meets the [[Wikipedia:Redirect|redirect guidelines]]. Readers of this page are welcome to comment on this redirect at '''{{slink|Wikipedia:Redirects for discussion/Log/2024 September 27#Template:Distinguish redirect}}''' until a consensus is reached. <!-- Template:RFDNote --> [[User:Steel1943|<span style="color: #3F00FF;">'''''Steel1943'''''</span>]] ([[User talk:Steel1943|talk]]) 01:01, 27 September 2024 (UTC)
91ksxobbzc3dln08ieoc0tv8q95jo62
Confédération Mondiale des Activités Subaquatiques
0
27120
360850
2026-04-26T16:15:29Z
en>Zackmann08
0
fixing infobox and removing [[Category:Pages using infobox organization with deprecated parameters|deprecated parameters]]; Cleaning up syntax using [[:en:User:Zackmann08/scripts/indent|indent.js]]
360850
wikitext
text/x-wiki
{{short description|International organisation for underwater activities}}
{{Infobox organization
| name = Confédération Mondiale des Activités Subaquatiques
| image = Confederation Mondiale des Activites Subaquatiques logo.svg
| image_border =
| image_size = 290px
| image_alt = CMAS Logo
| caption =
| map =
| map_size =
| map_alt =
| map_caption =
| map2 =
| abbreviation = CMAS
| predecessor = [[Confédération Internationale de la Pêche Sportive|CIPS]], Comité des Sports Sous-Marins
| successor =
| formation = {{Start date and years ago|1959|01|11}} at [[Monaco]]
| extinction =
| type = {{ubl | [[List of international sport federations|Sports federation]] | [[International nongovernmental organization|INGO]] | [[List of diver certification organizations|Diver training organization]] }}
| status =
| purpose = Underwater sports & sciences, and diver training
| headquarters = [[Rome]], [[Italy]]
| location = Viale Tiziano, 74 00196 Roma Italy
| coordinates =
| region_served = International
| num_members = National Federations
| language = [[French language|French]], [[English language|English]], [[Spanish language|Spanish]]
| general_secretary =
| leader_title =
| leader_name = Anna Arzhanova
| leader_title2 =
| leader_name2 =
| leader_title3 =
| leader_name3 =
| leader_title4 =
| leader_name4 =
| key_people = [[Jacques-Yves Cousteau]]
| main_organ = General assembly
| parent_organization =
| affiliations = {{ubl | [[SportAccord]] | [[Association of IOC Recognised International Sports Federations|ARISF]] | [[International World Games Association|IWGA]] | [[International Union for Conservation of Nature|IUCN]] }}
| budget =
| num_staff = 5
| num_volunteers =
| website = {{url|http://www.cmas.org/|www.cmas.org}}
| remarks =
| former_name =
}}
'''Confédération Mondiale des Activités Subaquatiques''' ('''CMAS'''; {{Langx|en|World Underwater Federation}}) is an international federation that represents underwater activities in [[underwater sports|underwater sport]] and underwater sciences, and oversees an international system of recreational [[snorkelling|snorkel]] and [[scuba diver]] training and recognition. Its foundation in [[Monaco]] during January 1959 makes it one of the world's oldest [[underwater diving]] organisations.<ref>The [[Cave Diving Group]] (CDG) was founded in 1946 in the UK. The [[British Sub-Aqua Club]] (BSAC) was founded in 1953.</ref>
== Origins ==
An international congress of diving federations representing all underwater disciplines met in [[Brussels]] on 28 September 1958. National delegates attended from following countries: Belgium, Brazil, France, the Federal Republic of Germany, Greece, Italy, Monaco, Portugal, Switzerland, the United States of America and the former [[Yugoslavia]]. Following a decision at that congress, a meeting was held in [[Monaco]] on 9–11 January 1959, which officially established the World Underwater Federation, with an acronym based on its French title as ''CMAS''.<ref name="aboutcmas">{{cite web |url=http://www.cmas.org/cmas/about |title=The history of CMAS |publisher=Confédération Mondiale des Activités Subaquatiques |access-date=20 April 2010 |archive-date=27 November 2022 |archive-url=https://web.archive.org/web/20221127082540/https://www.cmas.org/cmas/about |url-status=dead }}</ref>
A founding member and key proponent of ''CMAS'' was the French underwater explorer and diving pioneer [[Jacques-Yves Cousteau]] who was chosen to be the inaugural president with [[Luigi Ferraro (naval officer)|Luigi Ferraro]], Italian underwater pioneer, appointed as vice-president.<ref name="Luigi Ferraro; C.M.A.S.">{{cite web |url= http://www.luigiferraro.it/en/cmas |title= Luigi Ferraro; C.M.A.S. |year= 2012 |publisher= Luigi Ferraro's official site |access-date= 4 September 2012 |archive-date= 8 May 2012 |archive-url= https://web.archive.org/web/20120508215237/http://www.luigiferraro.it/en/cmas |url-status= live }}</ref>
CMAS succeeded the ''Comité des Sports Sous-Marins'' (Underwater Sports Committee) of the [[Confédération Internationale de la Pêche Sportive]] (CIPS) (International Confederation of Sport Fishing), which was founded on 22 February 1952.<ref name="aboutcmas" /><ref name="Luigi Ferraro; C.M.A.S."/>
== Organisation ==
CMAS consists of three major committees – sport, technical and scientific.<ref name="technical">{{cite web |url=http://www.cmas.org/technique |title=The Technical Committee |publisher=Confédération Mondiale des Activités Subaquatiques |access-date=30 November 2010 |archive-date=27 November 2022 |archive-url=https://web.archive.org/web/20221127090510/https://www.cmas.org/technique |url-status=dead }}</ref><ref name="sport">{{cite web |url=http://www.cmas.org/sport |title=The Sport Committee |publisher=Confédération Mondiale des Activités Subaquatiques |access-date=30 November 2010 |archive-date=27 November 2022 |archive-url=https://web.archive.org/web/20221127084519/https://www.cmas.org/sport |url-status=dead }}</ref><ref name="scientific">{{cite web |url=http://www.cmas.org/science |title=Scientific Committee |publisher=Confédération Mondiale des Activités Subaquatiques |access-date=30 November 2010 |archive-date=17 October 2020 |archive-url=https://web.archive.org/web/20201017151050/https://www.cmas.org/science |url-status=dead }}</ref> These committees are overseen by a board of directors (BoD) elected periodically at the annually convened general assembly. The BoD, the sport committee and the scientific committee oversee sub-committees known as commissions. Day-to-day operation is overseen by a steering committee appointed from the BoD. Its headquarters is currently located in [[Rome]].
=== The steering committee ===
The steering committee consists of eight members. Since may 2025 (GA in Egypt), the members are:
{{div col |colwidth=30em}}
*President – Anna Arzhanova (Serbia)
*Secretary general – Kevin O'Shaughnessy (Ireland)
*Vice president – Frédéric Di Méglio (France)
*Vice president – Jean-Marc Goiran (Monaco)
*President sports committee – Michel Gaunard (France)
*President technical committee – Alain Foret (France)
*President scientific committee – John Geurts (Holland)
*Treasurer – Ilias Xiarchos (Greece)
{{div col end}}
== Sport committee ==
CMAS Sports Committee is the world governing body of 11 [[underwater sports]]:<ref>{{cite web |url=https://www.cmas.org/sports.html |website=www.cmas.org | title=Sports }}</ref>
*[[Aquathlon (underwater wrestling)|Aquathlon]]
*[[Freediving]]
*[[Finswimming]]
*[[Spearfishing]]
*[[Sport diving (sport)|Sport diving]]
*[[Underwater hockey]]
*[[Underwater orienteering]]
*Underwater [[parasports]]
*[[Underwater rugby]]
*[[Underwater target shooting]]
*Visual ([[Underwater photography]] and [[Underwater videography]])
Across these sports, CMAS organises the several world championships:
''Year in brackets () denotes inaugural event''
* [[Underwater Orienteering World Championships]] (1973)
* [[Finswimming World Championships]] (1976)
* [[Underwater Hockey World Championships]] (1980)
* [[Underwater Rugby World Championships]] (1980)
* [[Underwater Photography World Championships]] (1985)
In 2007, CMAS organised the inaugural [[2007 CMAS World Games|CMAS World Games]] in attempt to boost popularity of underwater sports by hosting all world championships as one event. However, this ultimately failed as it brought too many sports outside of their pre-established calendars, resulting in the 2007 event being the only one ever organised and played.
== Technical committee ==
===Role===
The role of the technical committee is the provision of "safe diving for CMAS members" and seeks to achieve this by "promoting world class standards for all aspects of Scuba Diving and ensuring adherence of them by member federations and dive providers".<ref name="About-CMAS-TC">{{cite web|title=About the Technical Committee|url=http://www.cmas.org/technique/about-tec/|publisher=Confédération Mondiale des Activités Subaquatiques|access-date=28 January 2013|archive-date=13 October 2022|archive-url=https://web.archive.org/web/20221013202710/https://www.cmas.org/technique/about-tec/|url-status=dead}}</ref> Its officers who are elected from persons nominated at the CMAS General Assembly by affiliated national diving federations include the following positions – president, secretary, standards director, education director, technical director, diving security director, special tasks director and a number of general members. It oversees the two following systems – a diver training standards system known as the "CMAS International Diver Training Standards" and a certification system known as "CMAS International Diver Certificates".<ref name="About-CMAS-TC"/><ref name="Learn To Dive">{{cite web|url= http://www.cmas.org/learn-to-dive/|title= Learn To Dive|publisher= Confédération Mondiale des Activités Subaquatiques|access-date= 28 January 2013|archive-date= 17 October 2022|archive-url= https://web.archive.org/web/20221017103703/https://www.cmas.org/learn-to-dive/|url-status= dead}}</ref>
Since CMAS effectively started as a volunteer organisation for hobbyists, its courses tend to reflect the full range of European and world diving standards. Compared to other diving organisations which may be more geared towards holiday and tropical water diving, and while organisations like [[PADI]] or [[Scuba Schools International|SSI]] tend to bring divers into the water immediately, CMAS entry-level training is more extensive, featuring more "classroom" delivered theory.<ref name="dtp">{{cite manual |title=C.M.A.S. Diver *, **, ***, ****Training Program Diver |publisher=Confédération Mondiale des Activités Subaquatiques |date=7 February 2008 |version=Version 2007/01}}</ref>
=== Qualifications ===
====Standards, certification and training delivery====
The CMAS Technical Committee has developed a qualification system currently known as the "CMAS International Diver Training Standards" which consists of published universal standards for [[recreational diving]], [[technical diving]] and [[Diving instructor|leadership diver grades]].<ref name="CMAS-S+P">{{cite web|url= http://www.cmas.org/technique/cmas-international-diver-training-standards-and-procedures-manual/|title= CMAS International Diver Training Standards and Procedures Manual|publisher= Confédération Mondiale des Activités Subaquatiques|access-date= 28 January 2013|archive-date= 13 October 2022|archive-url= https://web.archive.org/web/20221013202713/https://www.cmas.org/technique/cmas-international-diver-training-standards-and-procedures-manual/|url-status= dead}}</ref>
The CMAS Technical Committee has also developed a [[Diving certification|diving certification system]] called the "CMAS International Diver Training Certification System" for most of its diver training standards and which permits divers that have been trained in accordance with the CMAS International Diver Training Standards, to have their training recognised worldwide particularly in countries where CMAS affiliated federations exist. The system includes a double sided certification card format where one side depicts the achieved CMAS standard while the other side has details of the issuing organisation and the diver.<ref name="Learn To Dive"/><ref name="Certificate format">{{Citation| title= CMAS International Diver Training Standards and Procedures Manual| chapter-url= http://www.cmas.org/document?sessionId=&fileId=2212&language=1/| access-date= 28 January 2013| publisher= Confédération Mondiale des Activités Subaquatiques| pages= 2–3| chapter= Chapter 1 Universal Standards and Procedures| archive-date= 18 June 2021| archive-url= https://web.archive.org/web/20210618034617/https://www.cmas.org/document?sessionId=&fileId=2212&language=1/| url-status= dead}}</ref>
CMAS itself does not provide training or conduct the issuing of certifications – this is available from two sources. Firstly, from national diving federations affiliated to the CMAS Technical Committee using their member diving clubs, their member instructors where the federation is exclusively an instructor organisation or by agreement with independent underwater diving training organizations operating in the countries where those federations are based.<ref name="CMAS Technical Committee Affiliates">{{cite web|title=Federations affiliated to the CMAS Technical Committee|url=http://www.cmas.org/technique/federations?comme=2|publisher=Confédération Mondiale des Activités Subaquatiques|access-date=27 October 2012|archive-date=13 October 2022|archive-url=https://web.archive.org/web/20221013185254/https://www.cmas.org/technique/federations?comme=2|url-status=dead}}</ref><ref name=CMAS-ISA>{{cite web|title=Welcome to CMAS Instructors South Africa|url=http://www.cmas.co.za/AboutUs.aspx|publisher=CMAS Instructors South Africa|access-date=28 October 2012|archive-date=21 September 2018|archive-url=https://web.archive.org/web/20180921152852/http://www.cmas.co.za/AboutUs.aspx|url-status=dead}}</ref><ref name="SEI Organizational Standards">{{cite web|title=ORGANIZATIONAL STANDARDS|url=http://www.seidiving.org/about-us/organizational-standards/|publisher=Scuba Educators International|access-date=28 October 2012|archive-url=https://web.archive.org/web/20120220053419/http://www.seidiving.org/about-us/organizational-standards/|archive-date=20 February 2012|url-status=dead}}</ref> Secondly, from specially accredited dive centres known as "CMAS Dive Centers" (CDC) who use dedicated CMAS training materials.<ref name="CMAS Diving Centers">{{cite web|title=CMAS Diving Centers|url=http://www.cmas.org/cmas/diving-centers|publisher=Confédération Mondiale des Activités Subaquatiques|access-date=27 October 2012|archive-date=13 October 2022|archive-url=https://web.archive.org/web/20221013202715/https://www.cmas.org/cmas/diving-centers|url-status=dead}}</ref>
==== Recreational diver training programmes ====
[[File:CMAS 4-star diver certification card PC160019.jpg|thumb|CMAS four-star diver certification card issued by South African Underwater Union, the South African affiliate in the 1980s, which later became the South African Underwater Sports Federation and CMAS Instructors South Africa, the current South African federations.]]
Standards are offered for recreational diver training for the following grades of scuba and snorkel divers.<ref name="CMAS-S+P"/>
{{div col}}
* '''Introductory SCUBA Experience''' – "this training programme aims at providing interested persons with an [[introductory diving]] experience, to a maximum depth of ten (10) metres under the direct supervision of a CMAS Instructor, whilst using air as a breathing gas, in a safe manner."<ref name="CMAS-ISE">{{cite book| title = CMAS International Diver Training Standards and Procedures Manual| chapter-url = http://www.cmas.org/document?sessionId=&fileId=2155&language=1/| access-date = 29 January 2013| publisher = Confédération Mondiale des Activités Subaquatiques| page = 1| chapter = CMAS Introductory SCUBA Experience Training Programme| archive-date = 18 June 2021| archive-url = https://web.archive.org/web/20210618025923/https://www.cmas.org/document?sessionId=&fileId=2155&language=1/| url-status = dead}}</ref>
* '''[[CMAS* scuba diver|One Star Diver]]''' – "a diver who is competent in the safe and correct use of all appropriate open water scuba diving equipment in a sheltered water training area and is ready to gain open water diving experience in the company of an experienced diver."<ref name="diver definitions" >{{cite book |author=dernp |title= Standards & Requirements Diver and Instructor (Version 2002/00 ) |chapter-url= http://www.metropolis2.co.uk/Bish/Diver_Instructor_St_et_Rs_V_2002_00_A.pdf |access-date=18 May 2017 |publisher=Confédération Mondiale des Activités Subaquatiques |page=3 |chapter=Definitions of Diver and Instructor |archive-url=https://web.archive.org/web/20181215121957/http://www.metropolis2.co.uk/Bish/Diver_Instructor_St_et_Rs_V_2002_00_A.pdf |archive-date=15 December 2018 |url-status=live }}</ref>
* '''[[CMAS** scuba diver|Two Star Diver]]''' – "a diver who has gained some open water diving experience and is considered ready to take part in dives partnered by a diver of at least the same or a higher grade. The two-star diver may dive with a One Star Diver in sheltered shallow water."<ref name="diver definitions"/>
* '''Three Star Diver''' – "a fully trained, experienced, senior diver who is considered competent to supervise other divers of any grade in open water and support an instructor in the pool and open water training."<ref name="diver definitions"/>
* '''Four Star Diver''' – "a three-star diver who has attained a higher than average level of knowledge and ability supported by broad diving experience. They are able to assist in the training of One Star Divers and be competent to lead divers in order to accomplish major diving tasks or project objectives."<ref name="diver definitions"/>
{{div col end}}
'''Snorkelling'''
{{div col}}
* '''One Star Snorkel Diver''' – "a snorkel diver who is competent in the safe and correct use of relevant snorkel diving equipment used in a swimming pool or sheltered water. The snorkel diver is familiar with relevant personal equipment and its use in a sheltered open water area. The snorkel diver is ready to gain further open water training."<ref name="Snorkel Diver Standards">{{cite book| title= Snorkel Diver Standards| chapter-url= http://www.cmas.org/document?sessionId=&fileId=2166&language=1/| access-date= 29 January 2013| publisher= Confédération Mondiale des Activités Subaquatiques| chapter= Definition of Snorkel diver and Snorkel diver Instructor grades| archive-date= 18 June 2021| archive-url= https://web.archive.org/web/20210618014115/https://www.cmas.org/document?sessionId=&fileId=2166&language=1/| url-status= dead}}</ref>
* '''Two Star Snorkel Diver''' – "a snorkel diver who has gained some open water diving experience. The snorkel diver is considered ready to take part in dives with other snorkel divers, under supervision if a minor. The CMAS 2 star snorkel diver is considered trained."<ref name="Snorkel Diver Standards"/>
* '''Three Star Snorkel Diver''' – "A fully trained snorkel diver who has gained considerable experience in open water snorkel diving under various conditions. The three-star snorkel diver has acquired life-saving skills and can lead snorkel divers in open water dives."<ref name="Snorkel Diver Standards"/>
{{div col end}}
==== Speciality diver training programmes ====
Standards are provided for the following speciality training for recreational divers:<ref name="CMAS-S+P"/>
{{div col}}
* [[Apnea|Apnoea Diver Level I]]
* Apnoea Diver Level II
* Apnoea Diver Level III
* Disabled Diver: Open Water Diving Environment Level I
* Disabled Diver: Open Water Diving Environment Level II
* Disabled Diver: Open Water Diving Environment Level III
* {{annotated link|Nitrox diver|Enriched Air Nitrox Diver}}
* {{annotated link|Dry suit diver|Drysuit Diver}}
* {{annotated link|Altitude Diver}}
* {{annotated link|Underwater navigation|Underwater Navigation}}
* [[Underwater search and recovery|Search and Recovery Diver]]
* {{annotated link|Ice diver|Ice Diver}}
* [[Diving air compressor|Compressor Operator]]
* {{annotated link|Nitrox blender|Nitrox Gas Blender}}
* {{annotated link|Trimix blender|Trimix Gas Blender}}
* [[Cave diving|Cave Diver Level I (Cavern Diver)]]
* [[Diver propulsion vehicle|Recreational Scooter Diver]]
* [[Cardiopulmonary resuscitation]] (CPR) and [[Basic life support]] (BLS])
* [[Oxygen first aid|Oxygen Administration]]
* {{annotated link|Rescue Diver}}
* [[Trimix (breathing gas)|Recreational Trimix Diver]]
* Semi-Closed [[Rebreather]] Diver
* Advanced Semi-Closed Rebreather Diver
* Closed Circuit Rebreather Diver
* Children Diving Bronze Award
* Children Diving Gold Award
* Children Diving Silver Award
* Wreck Diver Level 1: – Autonomous, recreational, non-penetration [[wreck diving]].<ref>{{cite report |url=https://archives.cmas.org/document%3FsessionId%3D%26fileId%3D2158%26language%3D1&ved=2ahUKEwjUpvWG7LKIAxVi3gIHHQKcOu4QFnoECBcQAQ&usg=AOvVaw1YEsIuD8MSZ1V2vmc5cCB6 |title=Standard 2.B.27: CMAS Wreck Diver Level 1 Training Programme |chapter=Chapter 2 |work=CMAS International Diver Training Standards and Procedures Manual |author=((CMAS Technical Committee)) |access-date=8 September 2024 }}</ref>
* Wreck Diver Level 2:– Autonomous, recreational, penetration [[wreck diving]].<ref>{{cite report |url=https://archives.cmas.org/document?sessionId=&fileId=2159&language=1 |title=Standard 2.B.28: CMAS Wreck Diver Level 2 Training Programme|work=CMAS International Diver Training Standards and Procedures Manual |chapter= |author=((CMAS Technical Committee)) |access-date=8 September 2024 }}</ref>
{{div col end}}
* {{visible anchor|Self-Rescue Diver}} – [[Scuba gas planning]] skills, [[bailout to emergency gas supply]] carried by the diver, management of multiple gas cylinders, [[deployment of a decompression buoy]] from depth, [[Tethered ascent|tethered buoyant emergency ascent]], use of [[long hose regulator]], self-release from entanglement, and use of [[backup diving equipment]].<ref>{{cite web |url=https://archives.cmas.org/technique/self-rescue-diver-training-programme |title=Self-Rescue Diver Training Programme |website=archives.cmas.org |access-date=1 July 2024 |archive-date=27 September 2023 |archive-url=https://web.archive.org/web/20230927223024/https://archives.cmas.org/technique/self-rescue-diver-training-programme |url-status=live }}</ref><ref>{{cite web |url=https://archives.cmas.org/document?sessionId=&fileId=2965&language=1 |work=CMAS International Diver Training Standards and Procedures Manual |title=3.B.31 CMAS Syllabus for Self-Rescue Diver Training Programme / BOD no 181 ( 04-18-2013 ). Minimum Course Content |access-date=2024-07-01 |archive-date=2024-07-01 |archive-url=https://web.archive.org/web/20240701075146/https://archives.cmas.org/document?sessionId=&fileId=2965&language=1 |url-status=live }}</ref>
{{Expand section|Brief summary of what each qualification entails where there is no existing article|date=July 2024}}
====Technical diver training programmes====
Standards are provided for the following technical diver training grades:<ref name="CMAS-S+P"/>
{{div col |colwidth=30em}}
* {{annotated link|Advanced nitrox diver|Advanced Nitrox Diver}}
* Advanced Semi-Closed Rebreather Diver
* [[Cave diving|Cave Diver Level II (Apprentice Cave Diver)]]
* Cave Diver Level III (Full Cave Diver)
* [[Technical diving#Definition of technical diving#Gas mixes#Deep air/extended range diving|Extended Range Nitrox Diver]]
* [[Trimix (breathing gas)#Mixes#Naming conventions|Normoxic Trimix Diver]]
* [[Overhead environment]] Scooter
* Technical Scooter Diver
* Trimix Diver
* Advanced Trimix Diver
{{div col end}}
{{expand section|update and annotate to clarify|date=July 2024}}
==== Leadership diver training programmes ====
Standards are provided for the training of the following grades of recreational snorkel and scuba instructors:<ref name="CMAS-S+P"/>
{{div col}}
* '''{{visible anchor|One Star Snorkel Diver Instructor}}''' – "a CMAS 2 star snorkel diver who is interested in and has knowledge of practical snorkel diver instruction. The instructor is qualified to conduct practical lessons in a swimming pool and to teach the CMAS 1 star snorkel diver certificate. The instructor can be used as an assistant instructor in open water, but cannot plan an open water dive and lead a group of divers on his own."<ref name="Snorkel Diver Standards"/>
* '''{{visible anchor|Two Star Snorkel Diver Instructor}}''' – "an experienced one-star snorkel diver instructor who has the knowledge, skills, and experience required to lead and instruct 1, 2 and 3 Star snorkel diver students in the classroom, swimming pool, and open water. The experienced CMAS 2 Star snorkel diver instructor may assist in the training and education of CMAS 1 Star snorkel diver instructors."<ref name="Snorkel Diver Standards"/>
* '''{{visible anchor|One Star Instructor}}''' – "a three- or four-star diver who has demonstrated a knowledge of the techniques of diving instruction and has proven, under evaluation, to be competent in practical instructional skills and diving safety procedures: They are qualified to train and certify novice diving students in a full CMAS One-Star Diver scuba program."<ref name="diver definitions"/>
* '''{{visible anchor|Two Star Instructor}}''' – "an experienced one-star instructor who has the knowledge, skills, and experience required to teach groups of divers in the classroom, pool, and in open water, and to train qualified dive supervisors, assistant instructors and assist in the training & evaluation of One-Star Instructors. They are qualified to teach and certify all CMAS diver levels including snorkel instructor levels."<ref name="diver definitions"/>
* '''{{visible anchor|Three Star Instructor}}''' – "a highly experienced two-star instructor who is competent to train all grades of divers and instructors and able to take responsibility for instructor certification programs and the conduct of diving schools/centres and specialised training courses or events."<ref name="diver definitions"/>
{{div col end}}
====Instructor speciality grades====
Standards are provided for speciality training of assistants, [[dive master|dive supervisors]], snorkel instructors and scuba instructors:<ref name="CMAS-S+P"/>
{{div col}}
* Apnoea Instructor
* Instructors Assistant for Disabled Divers
* Instructor for Disabled Divers
* Instructor Trainer for Disabled Divers
* Nitrox Instructor
* Advanced Nitrox Instructor
* Nitrox Instructor Three Star
* Ice Diver Instructor
* Trimix Instructor
* Advanced Trimix Instructor
* Nitrox Gas Blender Instructor
* Trimix Gas Blender Instructor
* Cave Diving Instructor I (Cavern Diving Instructor)
* Cave Diving Instructor II (Full Cave Diving Instructor)
* Cave Diving Instructor III (Cave Diving Staff Instructor)
* Recreational Scooter Assistant
* Technical Scooter Assistant
* Overhead Environment Scooter Assistant
* Recreational Scooter Instructor
* Technical Scooter Instructor
* Overhead Environment Scooter Instructor
* Semi-Closed Rebreather Instructor
* Advanced Semi-Closed Rebreather
* Closed Circuit Rebreather Instructor
* Children Diving Dive Leader
* Children Diving Instructor
* Children Diving Instructor Trainer
{{div col end}}
== Scientific committee ==
===Role===
The committee considers its main task is to bring to the attention of the world underwater diving community, the important issues concerning the marine environment and how divers can play a major role in protecting it by serving as frontline observers of its overall health, particularly in respect to invasive species, coastal ecosystems and biodiversity.<ref name="about scientific">{{cite web|title=Standards of Scientific Committee|url=http://www.cmas.org/science/about-sci|publisher=Confédération Mondiale des Activités Subaquatiques|access-date=8 February 2013|archive-date=4 December 2022|archive-url=https://web.archive.org/web/20221204124313/https://www.cmas.org/science/about-sci|url-status=dead}}</ref>
Its officers who are elected from persons nominated at the CMAS General Assembly by affiliated national diving federations include the following positions – president, secretary, a number of general members and presidents of the following commissions – marine biology, marine archaeology, geology and professional relationships.<ref name="scientific"/>
===Scientific diving codes===
Over a 10-year period from 1977, the CMAS Scientific Committee was responsible for the development of the "Code of Practice for Scientific Diving" for [[UNESCO]]<ref name="Flemming">{{Citation
|editor-last=Flemming |editor-first=N.C.|editor2-last=Max |editor2-first=M.D.|others=Scientific Committee of Confédération Mondiale des Activités Subaquatiques|date=1988 |title=Code of Practice for Scientific Diving: Principles for the Safe Practice of Scientific Diving in Different Environments. UNESCO Technical Papers in Marine Science 53 |publisher=United Nations Educational, Scientific, and Cultural Organization, Div. of Marine Sciences |location=Paris (France) |issn=0503-4299 |oclc=18056894 |url=http://www.jodc.go.jp/info/ioc_doc/UNESCO_tech/080632eb.pdf |access-date=8 February 2013 |archive-url=https://web.archive.org/web/20110322213127/http://www.jodc.go.jp/info/ioc_doc/UNESCO_tech/080632eb.pdf |archive-date=22 March 2011 |url-status=live
}}</ref> in cooperation with [[National Sea Grant College Program|Sea Grant]]. {{citation needed| date=March 2013}}
===Qualifications===
The CMAS Scientific Committee oversees a system of diving standards and certification that operates in parallel to the CMAS International Diver Training Certification System.
The system was developed to which recognize the status of a diver who is qualified to dive in the course of research whilst employed. This internationally recognized standard of competence is a distinct advantage for working scientists who wish to travel between laboratories and institutes in different countries.
Known as the CMAS Scientific Diver Standard, the system consists of the following diver and instructor grades:
* CMAS Scientific Diver (CSD) (pre-requisite of CMAS 2 Star Diver plus scientific diver training)
* CMAS Advanced Scientific Diver (CASD) (pre-requisite of CMAS 3 Star Diver plus advanced scientific diver training)
* CMAS Scientific Diving Instructor (pre-requisite: CMAS 2 Star Instructor)
* CMAS Confirmed Scientific Diving Instructor (pre-requisite: CMAS 3 Star Instructor)
A programme of specialist courses both at entry and advanced levels in [[underwater archaeology]], [[freshwater biology]], [[marine biology]], [[marine geology]] and [[oceanology]] is also offered.
Training and certification (also known as brevets) for the above qualifications is available from organisations known as CMAS Scientific Centres (CSC).<ref name="Scientific diver">{{Citation| author = Scientific Committee of CMAS| editor-last = Norro| editor-first = Dr Alain| date = 2000| title = CMAS Standard for Scientific Diver| publisher = Scientific Committee of Confédération Mondiale des Activités Subaquatiques| url = http://www.geo.tu-freiberg.de/hydro/vorl_portal/wiss_tauchen/CMAS_ESD_AESD.pdf| access-date = 29 January 2013| archive-url = https://web.archive.org/web/20071212100047/http://www.geo.tu-freiberg.de/hydro/vorl_portal/wiss_tauchen/CMAS_ESD_AESD.pdf| archive-date = 12 December 2007| url-status = dead| df = dmy-all}}</ref>
== Recognitions, agreements and affiliations ==
=== Recognitions ===
Organisations which recognise CMAS as the international federation for underwater sport and activities include:
{{Colbegin}}
* [[International Olympic Committee]] (IOC)<ref name="ioc-wuf">{{cite web |url=http://www.olympic.org/content/the-ioc/recognised-sport-federations/federation9/ |title=World Underwater Federation |publisher=[[IOC]] |access-date=1 September 2012 |archive-date=19 August 2014 |archive-url=https://web.archive.org/web/20140819061355/http://www.olympic.org/content/the-ioc/recognised-sport-federations/federation9/ |url-status=live }}</ref><ref name="arisf">{{cite web |url=http://www.arisf.org/members/Underwater |title=Members: CMAS – World Underwater Federation |publisher=Association of IOC Recognised International Sports Federations (ARISF) |access-date=1 September 2012 |url-status=dead |archive-url=https://web.archive.org/web/20140714190236/http://www.arisf.org/members/Underwater |archive-date=14 July 2014 }}</ref>
* [[UNESCO]]<ref name="unesco-wuf">{{cite web |url=http://ngo-db.unesco.org/r/or/en/1100067200 |title=World Underwater Federation |publisher=[[United Nations Educational, Scientific and Cultural Organization]] |access-date=1 September 2012 |archive-url=https://web.archive.org/web/20120702014221/http://ngo-db.unesco.org/r/or/en/1100067200 |archive-date=2 July 2012 |url-status=dead }}</ref>
* [[SportAccord]] (formerly General Association of International Sports Federations (GAISF))<ref name="gaisf">{{cite web |url=http://www.sportaccord.com/en/members/index.php?idContent=644&idIndex=32 |title=List of International Sports Federations |year=2012 |publisher=SportAccord |access-date=1 September 2012 |archive-url=https://web.archive.org/web/20120507073823/http://www.sportaccord.com/en/members/index.php?idContent=644&idIndex=32 |archive-date=7 May 2012 |url-status=dead |df=dmy-all }}</ref>
* [[World Games]]<ref name="worldgames">{{cite web |url=http://www.theworldgames.org/the-sports/sports/trend-sports/underwater-sports-fin-swimming |title=Underwater Sports: Fin Swimming |year=2012 |publisher=International World Games Association (IWGA) |access-date=1 September 2012 |archive-url=https://web.archive.org/web/20130709223418/http://www.theworldgames.org/the-sports/sports/trend-sports/underwater-sports-fin-swimming |archive-date=9 July 2013 |url-status=dead }}</ref>
* [[World Anti-Doping Agency]] (WADA)<ref name="wada">{{cite web |url=http://wada-ama.org/en/Resources/List-of-International-Federations/ |archive-url=https://archive.today/20130416025336/http://wada-ama.org/en/Resources/List-of-International-Federations/ |url-status=dead |archive-date=April 16, 2013 |title=List of International Federations |year=2012 |publisher=World Anti-Doping Agency |access-date=1 September 2012 }}</ref>
{{Colend}}
=== Agreements ===
* Agreement with the [[International Life Saving Federation]] (ILSF) was signed on 21 October 1994 regarding recognition of ILSF's rescue diver and instructors.<ref name="ordc">{{cite web|title=OVERVIEW OF RESCUE DIVER'S CERTIFICATION|url=http://www.ilsf.org/sites/ilsf.org/files/filefield/APP%2016%20ILS%20Overview%20Rescue%20Diver%27s%20Certification.pdf|publisher=International Life Saving Federation|access-date=17 July 2013|archive-url=https://web.archive.org/web/20121101123240/http://www.ilsf.org/sites/ilsf.org/files/filefield/APP%2016%20ILS%20Overview%20Rescue%20Diver%27s%20Certification.pdf|archive-date=1 November 2012|url-status=dead|df=dmy-all}}</ref>
* Agreement with the [[Professional Association of Diving Instructors]] (PADI) was signed on 30 January 1998 in Anaheim regarding a system of recognition for scuba divers moving between the CMAS and PADI training schemes.<ref name="C.M.A.S. PADI Agreement">{{cite web |url=http://www.ndf.no/getfile.php/1068/cmaspadi_a.PDF|title= C.M.A.S. / PADI Agreement |publisher= Norges Dykkeforbund |access-date=1 September 2012 |archive-url=https://web.archive.org/web/20120508230305/http://www.ndf.no/getfile.php/1068/cmaspadi_a.PDF |archive-date=8 May 2012 |url-status=dead }}</ref>
* Agreement with the [[Nautical Archaeology Society]] (NAS) was signed on 27 April 2002 in Brussels to 'explore the possibilities of cooperation between NAS and CMAS in the field of underwater archaeology' including "exchange of information" and mutual recognition of training programs.{{Citation needed|date=October 2012}}
=== Affiliations ===
* [[International Union for Conservation of Nature]] (IUCN)<ref name="IUCN">{{cite web|url=http://www.iucn.org/about/union/members/who_members/members_database/|title=Members' database, International NGO|publisher=International Union for Conservation of Nature|access-date=1 September 2012|archive-date=2 December 2012|archive-url=https://web.archive.org/web/20121202045502/http://www.iucn.org/about/union/members/who_members/members_database/|url-status=live}}</ref>
== Member federations ==
In Feb 2024, 105 nations:<ref>{{cite web | url=https://www.cmas.org/national-federations/ | title=National Federations | access-date=2024-02-12 | archive-date=2024-02-12 | archive-url=https://web.archive.org/web/20240212221447/https://www.cmas.org/national-federations/ | url-status=live }}</ref>
* Africa: 15 nations <ref>{{cite web | url=https://www.cmas.org/national-federations/africa.html | title=AFRICA | access-date=2024-02-12 | archive-date=2024-02-12 | archive-url=https://web.archive.org/web/20240212221935/https://www.cmas.org/national-federations/africa.html | url-status=live }}</ref>
* America: 15 nations <ref>{{cite web | url=https://www.cmas.org/national-federations/america.html | title=America | access-date=2024-02-12 | archive-date=2024-02-12 | archive-url=https://web.archive.org/web/20240212221938/https://www.cmas.org/national-federations/america.html | url-status=live }}</ref>
* Asia: 27 nations <ref>{{cite web | url=https://www.cmas.org/national-federations/asia.html | title=ASIA | access-date=2024-02-12 | archive-date=2024-02-12 | archive-url=https://web.archive.org/web/20240212221934/https://www.cmas.org/national-federations/asia.html | url-status=live }}</ref>
* Europe: 40 nations <ref>{{cite web | url=https://www.cmas.org/national-federations/europe.html | title=EUROPE | access-date=2024-02-12 | archive-date=2024-02-12 | archive-url=https://web.archive.org/web/20240212221936/https://www.cmas.org/national-federations/europe.html | url-status=live }}</ref>
* Oceania: 3 nations <ref>{{cite web | url=https://www.cmas.org/national-federations/oceania.html | title=Oceania }}</ref>
CMAS membership consists of at least 130 national federations from five continents:<ref name="aboutcmas"/><ref name="f">{{cite web|title=Federations|url=http://www.cmas.org/federation-list|publisher=Confédération Mondiale des Activités Subaquatiques|access-date=31 March 2018|archive-date=20 October 2020|archive-url=https://web.archive.org/web/20201020210417/https://www.cmas.org/federation-list|url-status=dead}}</ref>
{| class="wikitable" width="100%" cellspacing="0" cellpadding="3" border="1" bgcolor="white"
! scope="col" | Africa
! scope="col" | America
! scope="col" | Asia
! scope="col" | Europe
! scope="col" | Oceania
|-
| style="vertical-align:top;" | {{ubl
| {{Flag|Algeria}} (<small>Fédération Algerienne De Sauvetage De Secourisme Et Des Activites Subaquatiques</small>)
| {{Flag|Cape Verde}} (<small>Federacao Cabo Verde Desportivo Subm. José Maria Aquatico Herrer</small>)
| {{Flag|Djibouti}} (<small>Federation Djiboutienne De Sports Subaquatiques</small>)
| {{Flag|Egypt}} (<small>Egyptian Underwater & Lifesaving Federation</small>)
| {{Flag|Kenya}} (<small>Kenya Lifesaving Federation</small>)
| {{Flag|Madagascar}} (<small>Fédération Malgache De Plongée Sous Marinem</small>)
| {{Flag|Morocco}} (<small>Federation Royale Marocaine De Plongée Et Activites Subaquatiques</small>)
| {{Flag|Mauritius}} (<small>Mauritian Scuba Diving Association</small>)
| {{Flag|Namibia}} (<small>Namibia Underwater Federation</small>)
| {{Flag|Seychelles}} (<small>Scuba Divers Federation Of Seychelles</small>)
| {{Flag|Seychelles}} (<small>Submarine Activity Federation Seychelles</small>)
| {{Flag|South Africa}} (<small>CMAS Instructors South Africa (CMAS-ISA</small>)
| {{Flag|South Africa}} (<small>[[South African Underwater Sports Federation]] (SAUSF)</small>)
| {{Flag|Tunisia}} (<small>Fédération Des Activites Subaquatiques De Tunisie</small>)
| {{Flag|Tunisia}} (<small>Fédération Tunisienne Des Pêches Sportives</small>)
}}
| style="vertical-align:top;" | {{ubl
| {{Flag|Argentina}} (<small>FederaciÓn Argentina De Actividades Subacuaticas</small>)
| {{Flag|Argentina}} (<small>Asociación De Hockey Subacuático De Argentina</small>)
| {{Flag|Brazil}} (<small>Confederaço Brasileira De Pesca E Desportos SubaquÁticos</small>)
| {{Flag|Canada}} (<small>Canadian Underwater Games Association</small>)
| {{Flag|Canada}} (<small>Association Des Moniteurs De La Cmas Qc</small>)
| {{Flag|Canada}} (<small>Canadian Diving Program</small>)
| {{Flag|Chile}} (<small>Federación Deportiva Nacional De Actividades Subacuáticas Y Salvamento Acuático</small>)
| {{Flag|Colombia}} (<small>Federacion Colombiana De Actividades Subauaticas</small>)
| {{Flag|Cuba}} (<small>Federacion Cubana De Actividades Subacuaticuas</small>)
| {{Flag|Ecuador}} (<small>Federación Ecuatoriana De Buceo Y Actividades Subacuaticas</small>)
| {{Flag|Mexico}} (<small>Federacion Mexicana De Actividades Subacuaticas A.C.</small>)
| {{Flag|Mexico}} (<small>International Diving Instructors Mexico</small>)
| {{Flag|Peru}} (<small>Federacion Deportiva Peruana De Actividades Subacuaticas</small>)
| {{Flag|United States}} (<small>United States Underwater Sport Federation</small>)
| {{Flag|United States}} (<small>U.S. Freediving Federation</small>)
| {{Flag|United States}} (<small>[[Underwater Society of America|Underwater Society Of America]]</small>)
| {{Flag|Uruguay}} (<small>Federacion Uruguaya De Actividades Subacuaticas</small>)
| {{Flag|Venezuela}} (<small>Federacion Venezolana De Actividades Subacuaticas</small>)
}}
| style="vertical-align:top;" | {{ubl
| {{Flag|China}} (<small>Chinese Underwater Association</small>)
| {{Flag|Hong Kong}} (<small>Hong Kong Underwater Association</small>)
| {{Flag|India}} (<small>Underwater Sport Association India</small>)
| {{Flag|Indonesia}} (<small>Indonesian Subaquatic Sport Association</small>)
| {{Flag|Iran}} (<small>Islamic Republic Of Iran Lifesaving Federation</small>)
| {{Flag|Israel}} (<small>[[Israeli Diving Federation]]</small>)
| {{Flag|Japan}} (<small>Japan Cmas Instructor Association</small>)
| {{Flag|Japan}} (<small>Japan Underwater Sports Federation</small>)
| {{Flag|Japan}} (<small>Japan Educational Facilities Federation</small>)
| {{Flag|Japan}} (<small>Jcs</small>)
| {{Flag|Japan}} (<small>Marine Techno Educational System Diving Division</small>)
| {{Flag|Japan}} (<small>Kansai Sports Diving Federation Japan</small>)
| {{Flag|Jordan}} (<small>Royal Jordanian Marine Sports Federation</small>)
| {{Flag|Kazakhstan}} (<small>Underwater Federation Republic Of Kazakhstan</small>)
| {{Flag|Kuwait}} (<small>Kuwait Academy For Diving & Swimming</small>)
| {{Flag|Kuwait}} (<small>Kuwait Diving And Lifesaving Committee</small>)
| {{Flag|Kyrgyzstan}} (<small>Kyrgyz Underwater Federation</small>)
| {{Flag|Lebanon}} (<small>Lebanon Water Festival</small>)
| {{Flag|Malaysia}} (<small>Malayan Sub Aqua Club</small>)
| {{Flag|Malaysia}} (<small>Malaysia Coastal Subaquatic Federation</small>)
| {{Flag|Maldives}} (<small>Maldives Underwater Federation</small>)
| {{Flag|Northern Mariana Islands}} (<small>Toa Engineering Corporation</small>)
| {{Flag|Palestine}} (<small>Palestinian Swimming & Aquatic Sport Federation</small>)
| {{Flag|Philippines}} (<small>Philippine Federation Of Cmas Underwater Activities</small>)
| {{Flag|Philippines}} (<small>Philippine Association On Underwater Activities</small>)
| {{Flag|Saudi Arabia}} (<small>Saudi Arabia Maritime Sports Federation</small>)
| {{Flag|Singapore}} (<small>Singapore Underwater Federation</small>)
| {{Flag|South Korea}} (<small>Asia Diving Council</small>)
| {{Flag|South Korea}} (<small>Korea Underwater Association</small>)
| {{Flag|Syria}} (<small>Syrian Underwater Sport Federation</small>)
| {{Flag|Chinese Taipei}} (<small>Chinese Taipei Underwater Federation</small>)
| {{Flag|Chinese Taipei}} (<small>Taiwan Technical & Science Diving Association</small>)
| {{Flag|Thailand}} (<small>Association Of Thailand Underwater Sports</small>)
| {{Flag|United Arab Emirates}} (<small>Fujairah International Marine Club</small>)
| {{Flag|Vietnam}} (<small>Vietnam Aquatic Sports Association</small>)
}}
| style="vertical-align:top;" | {{ubl
| {{Flag|Armenia}} (<small>Armenian Federation Of Underwater Sports</small>)
| {{Flag|Austria}} (<small>Austrian Diving Federation</small>)
| {{Flag|Belarus}} (<small>Belarus Federation Of Underwater Sport</small>)
| {{Flag|Belgium}} (<small>Royal Belgian Diving Federation</small>)
| {{Flag|Belgium}} (<small>Groupe Belge De Recherches Scientifiques Sous-Marines</small>)
| {{Flag|Bosnia and Herzegovina}} (<small>Diving Association Of Bosnia And Herzegovina</small>)
| {{Flag|Bulgaria}} (<small>Bulgarian National Association Of Underwater Activity</small>)
| {{Flag|Bulgaria}} (<small>Federation Bulgare De Peche Sous Marine</small>)
| {{Flag|Croatia}} (<small>Croatian Diving Federation</small>)
| {{Flag|Croatia}} (<small>Croatian Federation Of Sports Fishing On Sea</small>)
| {{Flag|Cyprus}} (<small>Cyprus Federation Of Underwater Activities</small>)
| {{Flag|Czech Republic}} (<small>Divers Association Of Czech Republic</small>)
| {{Flag|Denmark}} (<small>Danish Sports Diver Federation</small>)
| {{Flag|Estonia}} (<small>Estonian Underwater Federation</small>)
| {{Flag|Finland}} (<small>Finnish Divers' Federation</small>)
| {{Flag|France}} (<small>[[Fédération Française d'Études et de Sports Sous-Marins|Fédération française d'études et de sports sous-marins]]</small>)
| {{Flag|Georgia}} (<small>Georgian Underwater Sports Federation</small>)
| {{Flag|Germany}} (<small>Verband Deutscher Sporttaucher E.V.</small>)
| {{Flag|Greece}} (<small>Hellenic Federation For Underwater Activities & Sportfishing</small>)
| {{Flag|Greece}} (<small>Hellenic Swimming Federation</small>)
| {{Flag|Hungary}} (<small>Hungarian Divers Federation</small>)
| {{Flag|Hungary}} (<small>Underwater Explorers' Federation</small>)
| {{Flag|Ireland}} (<small>[[Comhairle Fo-Thuinn|Irish Underwater Federation]]</small>)
| {{Flag|Italy}} (<small>Federazione Italiana Pesca Sportiva E Attivita Subacquee</small>)
| {{Flag|Italy}} (<small>Comitato Italiano Ricerche Studi Subaquei</small>)
| {{Flag|Italy}} (<small>International Academy Of Underwater Sciences And Techniques</small>)
| {{Flag|Italy}} (<small>Nadd Global Diving Agency</small>)
| {{Flag|Italy}} (<small>Asd Acqua Team</small>)
| {{Flag|Italy}} (<small>Union Italienne Sport Pour Tous</small>)
| {{Flag|Italy}} (<small>Associazione Cmas Diving Center Italia</small>)
| {{Flag|Italy}} (<small>Associaziona Nazionale Istruttori Subacquei</small>)
| {{Flag|Italy}} (<small>[[Federazione Italiana Attività Subacquee|Federazione Italiana Attivita Subacquee]]</small>)
| {{Flag|Italy}} (<small>Federazione Italiana Sport Acquatici</small>)
| {{Flag|Italy}} (<small>Asi-Alleanza Sportiva Italiana Divisione Subacquea</small>)
| {{Flag|Italy}} (<small>Esa Worldwide</small>)
| {{Flag|Italy}} (<small>Albatros Progetto Paolo Pinto</small>)
| {{Flag|Latvia}} (<small>Cmas Baltic Sporta Biedrtba</small>)
| {{Flag|Latvia}} (<small>Latviajas Zemudens Sporta Federacija</small>)
| {{Flag|Liechtenstein}} (<small>Liechtensteiner Tauchsport Verband</small>)
| {{Flag|Lithuania}} (<small>Lithuanian Underwater Sport Federation</small>)
| {{Flag|Luxembourg}} (<small>Federation Luxembourgeoise</small>)
| {{Flag|North Macedonia}} (<small>Macedonian Diving Federation</small>)
| {{Flag|Malta}} (<small>Federation Of Underwater Activities Malta</small>)
| {{Flag|Moldova}} (<small>Federation Of Underwater Activities Of The Republic Of Moldova</small>)
| {{Flag|Monaco}} (<small>Federation Monegasque Des Activites Subaquatiques</small>)
| {{Flag|Montenegro}} (<small>Diving Association Of Montenegro</small>)
| {{Flag|Netherlands}} (<small>[[Nederlandse Onderwatersport Bond]]</small>)
| {{Flag|Norway}} (<small>Norwegian Diving Federation</small>)
| {{Flag|Poland}} (<small>Underwater Activity Commission Polish Tourist Country-Lovers Society</small>)
| {{Flag|Poland}} (<small>Polish Underwater Federation</small>)
| {{Flag|Poland}} (<small>Commission Diving Nationale Defense League</small>)
| {{Flag|Portugal}} (<small>Federation Portugaise D'Activites Subaquatiques</small>)
| {{Flag|Russia}} (<small>Russian Underwater Federation</small>)
| {{Flag|San Marino}} (<small>Federazione Sammarinese Attivita Subacquee</small>)
| {{Flag|Serbia}} (<small>Serbian Underwater Association</small>)
| {{Flag|Slovakia}} (<small>Slovak Diving Association</small>)
| {{Flag|Slovenia}} (<small>Slovenian Diving Federation</small>)
| {{Flag|Spain}} (<small>[[Federación Española de Actividades Subacuáticas|Federacion Espanola De Actividades Subacuaticas]]</small>)
| {{Flag|Sweden}} (<small>Swedish Sportsdiving Federation</small>)
| {{Flag|Switzerland}} (<small>Schweizer Unterwassersport-Verband</small>)
| {{Flag|Switzerland}} (<small>Cmas.Ch</small>)
| {{Flag|Turkey}} (<small>[[Turkish Underwater Sports Federation]]</small>)
| {{Flag|Ukraine}} (<small>Public Organization Ukrainian Federation Of Underwater Sport And Underwater Activities</small>)
| {{Flag|United Kingdom}} (<small>[[Sub-Aqua Association]]</small>)
| {{Flag|United Kingdom}} (<small>British Spearfishing Association</small>)
}}
| style="vertical-align:top;" | {{ubl
| {{Flag|Australia}} (<small>[[Australian Underwater Federation]]</small>)
| {{Flag|New Zealand}} (<small>New Zealand Underwater Association</small>)
| {{Flag|Tahiti}} (<small>Fédération Tahitienne De Sports Subaquatique De Compétition</small>)
}}
|}
== See also ==
{{div col}}
===General===
*{{annotated link|List of diver certification organizations}}
===Key people===
* {{annotated link|Frédéric Dumas}}
* {{annotated link|Philippe Tailliez}}
===Organisations===
*{{annotated link|CMAS Europe}}
*{{annotated link|Scuba Educators International}}
*{{annotated link|YMCA SCUBA Program}}
===Sport===
*{{annotated link|Finswimming World Championships}}
*{{annotated link|Underwater Hockey World Championships}}
*{{annotated link|Underwater Orienteering World Championships}}
*{{annotated link|Underwater Photography World Championships}}
*{{annotated link|Underwater Rugby World Championships}}
{{div col end}}
==References==
{{reflist}}
== External links ==
*[http://www.cmas.org CMAS homepage]
*[https://web.archive.org/web/20130516195511/http://history.cmas.org History of CMAS website]
*[https://web.archive.org/web/20240212224554/https://www.cmas.org/ History Results]
*[https://www.sportalsub.net/en/ Results]
*[http://www.cmas-america.org CMAS American Zone] (in Spanish, English and Portuguese)
*[http://www.cmasasia.org Asian Underwater Federation] (CMAS Asia)
*[http://www.cmas-europe.net CMAS Europe homepage]
{{International Sports Federations}}
{{Underwater diving|recdiv}}
{{Authority control}}
{{DEFAULTSORT:Confederation Mondiale Des Activites Subaquatiques}}
[[Category:Underwater sports organizations]]
[[Category:Finswimming]]
[[Category:Freediving]]
[[Category:Underwater hockey governing bodies| ]]
[[Category:Underwater orienteering]]
[[Category:Underwater photography (sport)]]
[[Category:Underwater rugby]]
[[Category:Underwater diving training organizations]]
[[Category:Sports organizations established in 1959]]
[[Category:1950s establishments in Monaco]]
[[Category:Underwater diver organizations]]
[[Category:Association of IOC Recognised International Sports Federations]]
boj4w0ohginufr1xr6vd60qdctgvwjb
360851
360850
2026-05-18T04:58:17Z
ChiK
1136
೧ revisions imported from [[:en:Confédération_Mondiale_des_Activités_Subaquatiques]]
360850
wikitext
text/x-wiki
{{short description|International organisation for underwater activities}}
{{Infobox organization
| name = Confédération Mondiale des Activités Subaquatiques
| image = Confederation Mondiale des Activites Subaquatiques logo.svg
| image_border =
| image_size = 290px
| image_alt = CMAS Logo
| caption =
| map =
| map_size =
| map_alt =
| map_caption =
| map2 =
| abbreviation = CMAS
| predecessor = [[Confédération Internationale de la Pêche Sportive|CIPS]], Comité des Sports Sous-Marins
| successor =
| formation = {{Start date and years ago|1959|01|11}} at [[Monaco]]
| extinction =
| type = {{ubl | [[List of international sport federations|Sports federation]] | [[International nongovernmental organization|INGO]] | [[List of diver certification organizations|Diver training organization]] }}
| status =
| purpose = Underwater sports & sciences, and diver training
| headquarters = [[Rome]], [[Italy]]
| location = Viale Tiziano, 74 00196 Roma Italy
| coordinates =
| region_served = International
| num_members = National Federations
| language = [[French language|French]], [[English language|English]], [[Spanish language|Spanish]]
| general_secretary =
| leader_title =
| leader_name = Anna Arzhanova
| leader_title2 =
| leader_name2 =
| leader_title3 =
| leader_name3 =
| leader_title4 =
| leader_name4 =
| key_people = [[Jacques-Yves Cousteau]]
| main_organ = General assembly
| parent_organization =
| affiliations = {{ubl | [[SportAccord]] | [[Association of IOC Recognised International Sports Federations|ARISF]] | [[International World Games Association|IWGA]] | [[International Union for Conservation of Nature|IUCN]] }}
| budget =
| num_staff = 5
| num_volunteers =
| website = {{url|http://www.cmas.org/|www.cmas.org}}
| remarks =
| former_name =
}}
'''Confédération Mondiale des Activités Subaquatiques''' ('''CMAS'''; {{Langx|en|World Underwater Federation}}) is an international federation that represents underwater activities in [[underwater sports|underwater sport]] and underwater sciences, and oversees an international system of recreational [[snorkelling|snorkel]] and [[scuba diver]] training and recognition. Its foundation in [[Monaco]] during January 1959 makes it one of the world's oldest [[underwater diving]] organisations.<ref>The [[Cave Diving Group]] (CDG) was founded in 1946 in the UK. The [[British Sub-Aqua Club]] (BSAC) was founded in 1953.</ref>
== Origins ==
An international congress of diving federations representing all underwater disciplines met in [[Brussels]] on 28 September 1958. National delegates attended from following countries: Belgium, Brazil, France, the Federal Republic of Germany, Greece, Italy, Monaco, Portugal, Switzerland, the United States of America and the former [[Yugoslavia]]. Following a decision at that congress, a meeting was held in [[Monaco]] on 9–11 January 1959, which officially established the World Underwater Federation, with an acronym based on its French title as ''CMAS''.<ref name="aboutcmas">{{cite web |url=http://www.cmas.org/cmas/about |title=The history of CMAS |publisher=Confédération Mondiale des Activités Subaquatiques |access-date=20 April 2010 |archive-date=27 November 2022 |archive-url=https://web.archive.org/web/20221127082540/https://www.cmas.org/cmas/about |url-status=dead }}</ref>
A founding member and key proponent of ''CMAS'' was the French underwater explorer and diving pioneer [[Jacques-Yves Cousteau]] who was chosen to be the inaugural president with [[Luigi Ferraro (naval officer)|Luigi Ferraro]], Italian underwater pioneer, appointed as vice-president.<ref name="Luigi Ferraro; C.M.A.S.">{{cite web |url= http://www.luigiferraro.it/en/cmas |title= Luigi Ferraro; C.M.A.S. |year= 2012 |publisher= Luigi Ferraro's official site |access-date= 4 September 2012 |archive-date= 8 May 2012 |archive-url= https://web.archive.org/web/20120508215237/http://www.luigiferraro.it/en/cmas |url-status= live }}</ref>
CMAS succeeded the ''Comité des Sports Sous-Marins'' (Underwater Sports Committee) of the [[Confédération Internationale de la Pêche Sportive]] (CIPS) (International Confederation of Sport Fishing), which was founded on 22 February 1952.<ref name="aboutcmas" /><ref name="Luigi Ferraro; C.M.A.S."/>
== Organisation ==
CMAS consists of three major committees – sport, technical and scientific.<ref name="technical">{{cite web |url=http://www.cmas.org/technique |title=The Technical Committee |publisher=Confédération Mondiale des Activités Subaquatiques |access-date=30 November 2010 |archive-date=27 November 2022 |archive-url=https://web.archive.org/web/20221127090510/https://www.cmas.org/technique |url-status=dead }}</ref><ref name="sport">{{cite web |url=http://www.cmas.org/sport |title=The Sport Committee |publisher=Confédération Mondiale des Activités Subaquatiques |access-date=30 November 2010 |archive-date=27 November 2022 |archive-url=https://web.archive.org/web/20221127084519/https://www.cmas.org/sport |url-status=dead }}</ref><ref name="scientific">{{cite web |url=http://www.cmas.org/science |title=Scientific Committee |publisher=Confédération Mondiale des Activités Subaquatiques |access-date=30 November 2010 |archive-date=17 October 2020 |archive-url=https://web.archive.org/web/20201017151050/https://www.cmas.org/science |url-status=dead }}</ref> These committees are overseen by a board of directors (BoD) elected periodically at the annually convened general assembly. The BoD, the sport committee and the scientific committee oversee sub-committees known as commissions. Day-to-day operation is overseen by a steering committee appointed from the BoD. Its headquarters is currently located in [[Rome]].
=== The steering committee ===
The steering committee consists of eight members. Since may 2025 (GA in Egypt), the members are:
{{div col |colwidth=30em}}
*President – Anna Arzhanova (Serbia)
*Secretary general – Kevin O'Shaughnessy (Ireland)
*Vice president – Frédéric Di Méglio (France)
*Vice president – Jean-Marc Goiran (Monaco)
*President sports committee – Michel Gaunard (France)
*President technical committee – Alain Foret (France)
*President scientific committee – John Geurts (Holland)
*Treasurer – Ilias Xiarchos (Greece)
{{div col end}}
== Sport committee ==
CMAS Sports Committee is the world governing body of 11 [[underwater sports]]:<ref>{{cite web |url=https://www.cmas.org/sports.html |website=www.cmas.org | title=Sports }}</ref>
*[[Aquathlon (underwater wrestling)|Aquathlon]]
*[[Freediving]]
*[[Finswimming]]
*[[Spearfishing]]
*[[Sport diving (sport)|Sport diving]]
*[[Underwater hockey]]
*[[Underwater orienteering]]
*Underwater [[parasports]]
*[[Underwater rugby]]
*[[Underwater target shooting]]
*Visual ([[Underwater photography]] and [[Underwater videography]])
Across these sports, CMAS organises the several world championships:
''Year in brackets () denotes inaugural event''
* [[Underwater Orienteering World Championships]] (1973)
* [[Finswimming World Championships]] (1976)
* [[Underwater Hockey World Championships]] (1980)
* [[Underwater Rugby World Championships]] (1980)
* [[Underwater Photography World Championships]] (1985)
In 2007, CMAS organised the inaugural [[2007 CMAS World Games|CMAS World Games]] in attempt to boost popularity of underwater sports by hosting all world championships as one event. However, this ultimately failed as it brought too many sports outside of their pre-established calendars, resulting in the 2007 event being the only one ever organised and played.
== Technical committee ==
===Role===
The role of the technical committee is the provision of "safe diving for CMAS members" and seeks to achieve this by "promoting world class standards for all aspects of Scuba Diving and ensuring adherence of them by member federations and dive providers".<ref name="About-CMAS-TC">{{cite web|title=About the Technical Committee|url=http://www.cmas.org/technique/about-tec/|publisher=Confédération Mondiale des Activités Subaquatiques|access-date=28 January 2013|archive-date=13 October 2022|archive-url=https://web.archive.org/web/20221013202710/https://www.cmas.org/technique/about-tec/|url-status=dead}}</ref> Its officers who are elected from persons nominated at the CMAS General Assembly by affiliated national diving federations include the following positions – president, secretary, standards director, education director, technical director, diving security director, special tasks director and a number of general members. It oversees the two following systems – a diver training standards system known as the "CMAS International Diver Training Standards" and a certification system known as "CMAS International Diver Certificates".<ref name="About-CMAS-TC"/><ref name="Learn To Dive">{{cite web|url= http://www.cmas.org/learn-to-dive/|title= Learn To Dive|publisher= Confédération Mondiale des Activités Subaquatiques|access-date= 28 January 2013|archive-date= 17 October 2022|archive-url= https://web.archive.org/web/20221017103703/https://www.cmas.org/learn-to-dive/|url-status= dead}}</ref>
Since CMAS effectively started as a volunteer organisation for hobbyists, its courses tend to reflect the full range of European and world diving standards. Compared to other diving organisations which may be more geared towards holiday and tropical water diving, and while organisations like [[PADI]] or [[Scuba Schools International|SSI]] tend to bring divers into the water immediately, CMAS entry-level training is more extensive, featuring more "classroom" delivered theory.<ref name="dtp">{{cite manual |title=C.M.A.S. Diver *, **, ***, ****Training Program Diver |publisher=Confédération Mondiale des Activités Subaquatiques |date=7 February 2008 |version=Version 2007/01}}</ref>
=== Qualifications ===
====Standards, certification and training delivery====
The CMAS Technical Committee has developed a qualification system currently known as the "CMAS International Diver Training Standards" which consists of published universal standards for [[recreational diving]], [[technical diving]] and [[Diving instructor|leadership diver grades]].<ref name="CMAS-S+P">{{cite web|url= http://www.cmas.org/technique/cmas-international-diver-training-standards-and-procedures-manual/|title= CMAS International Diver Training Standards and Procedures Manual|publisher= Confédération Mondiale des Activités Subaquatiques|access-date= 28 January 2013|archive-date= 13 October 2022|archive-url= https://web.archive.org/web/20221013202713/https://www.cmas.org/technique/cmas-international-diver-training-standards-and-procedures-manual/|url-status= dead}}</ref>
The CMAS Technical Committee has also developed a [[Diving certification|diving certification system]] called the "CMAS International Diver Training Certification System" for most of its diver training standards and which permits divers that have been trained in accordance with the CMAS International Diver Training Standards, to have their training recognised worldwide particularly in countries where CMAS affiliated federations exist. The system includes a double sided certification card format where one side depicts the achieved CMAS standard while the other side has details of the issuing organisation and the diver.<ref name="Learn To Dive"/><ref name="Certificate format">{{Citation| title= CMAS International Diver Training Standards and Procedures Manual| chapter-url= http://www.cmas.org/document?sessionId=&fileId=2212&language=1/| access-date= 28 January 2013| publisher= Confédération Mondiale des Activités Subaquatiques| pages= 2–3| chapter= Chapter 1 Universal Standards and Procedures| archive-date= 18 June 2021| archive-url= https://web.archive.org/web/20210618034617/https://www.cmas.org/document?sessionId=&fileId=2212&language=1/| url-status= dead}}</ref>
CMAS itself does not provide training or conduct the issuing of certifications – this is available from two sources. Firstly, from national diving federations affiliated to the CMAS Technical Committee using their member diving clubs, their member instructors where the federation is exclusively an instructor organisation or by agreement with independent underwater diving training organizations operating in the countries where those federations are based.<ref name="CMAS Technical Committee Affiliates">{{cite web|title=Federations affiliated to the CMAS Technical Committee|url=http://www.cmas.org/technique/federations?comme=2|publisher=Confédération Mondiale des Activités Subaquatiques|access-date=27 October 2012|archive-date=13 October 2022|archive-url=https://web.archive.org/web/20221013185254/https://www.cmas.org/technique/federations?comme=2|url-status=dead}}</ref><ref name=CMAS-ISA>{{cite web|title=Welcome to CMAS Instructors South Africa|url=http://www.cmas.co.za/AboutUs.aspx|publisher=CMAS Instructors South Africa|access-date=28 October 2012|archive-date=21 September 2018|archive-url=https://web.archive.org/web/20180921152852/http://www.cmas.co.za/AboutUs.aspx|url-status=dead}}</ref><ref name="SEI Organizational Standards">{{cite web|title=ORGANIZATIONAL STANDARDS|url=http://www.seidiving.org/about-us/organizational-standards/|publisher=Scuba Educators International|access-date=28 October 2012|archive-url=https://web.archive.org/web/20120220053419/http://www.seidiving.org/about-us/organizational-standards/|archive-date=20 February 2012|url-status=dead}}</ref> Secondly, from specially accredited dive centres known as "CMAS Dive Centers" (CDC) who use dedicated CMAS training materials.<ref name="CMAS Diving Centers">{{cite web|title=CMAS Diving Centers|url=http://www.cmas.org/cmas/diving-centers|publisher=Confédération Mondiale des Activités Subaquatiques|access-date=27 October 2012|archive-date=13 October 2022|archive-url=https://web.archive.org/web/20221013202715/https://www.cmas.org/cmas/diving-centers|url-status=dead}}</ref>
==== Recreational diver training programmes ====
[[File:CMAS 4-star diver certification card PC160019.jpg|thumb|CMAS four-star diver certification card issued by South African Underwater Union, the South African affiliate in the 1980s, which later became the South African Underwater Sports Federation and CMAS Instructors South Africa, the current South African federations.]]
Standards are offered for recreational diver training for the following grades of scuba and snorkel divers.<ref name="CMAS-S+P"/>
{{div col}}
* '''Introductory SCUBA Experience''' – "this training programme aims at providing interested persons with an [[introductory diving]] experience, to a maximum depth of ten (10) metres under the direct supervision of a CMAS Instructor, whilst using air as a breathing gas, in a safe manner."<ref name="CMAS-ISE">{{cite book| title = CMAS International Diver Training Standards and Procedures Manual| chapter-url = http://www.cmas.org/document?sessionId=&fileId=2155&language=1/| access-date = 29 January 2013| publisher = Confédération Mondiale des Activités Subaquatiques| page = 1| chapter = CMAS Introductory SCUBA Experience Training Programme| archive-date = 18 June 2021| archive-url = https://web.archive.org/web/20210618025923/https://www.cmas.org/document?sessionId=&fileId=2155&language=1/| url-status = dead}}</ref>
* '''[[CMAS* scuba diver|One Star Diver]]''' – "a diver who is competent in the safe and correct use of all appropriate open water scuba diving equipment in a sheltered water training area and is ready to gain open water diving experience in the company of an experienced diver."<ref name="diver definitions" >{{cite book |author=dernp |title= Standards & Requirements Diver and Instructor (Version 2002/00 ) |chapter-url= http://www.metropolis2.co.uk/Bish/Diver_Instructor_St_et_Rs_V_2002_00_A.pdf |access-date=18 May 2017 |publisher=Confédération Mondiale des Activités Subaquatiques |page=3 |chapter=Definitions of Diver and Instructor |archive-url=https://web.archive.org/web/20181215121957/http://www.metropolis2.co.uk/Bish/Diver_Instructor_St_et_Rs_V_2002_00_A.pdf |archive-date=15 December 2018 |url-status=live }}</ref>
* '''[[CMAS** scuba diver|Two Star Diver]]''' – "a diver who has gained some open water diving experience and is considered ready to take part in dives partnered by a diver of at least the same or a higher grade. The two-star diver may dive with a One Star Diver in sheltered shallow water."<ref name="diver definitions"/>
* '''Three Star Diver''' – "a fully trained, experienced, senior diver who is considered competent to supervise other divers of any grade in open water and support an instructor in the pool and open water training."<ref name="diver definitions"/>
* '''Four Star Diver''' – "a three-star diver who has attained a higher than average level of knowledge and ability supported by broad diving experience. They are able to assist in the training of One Star Divers and be competent to lead divers in order to accomplish major diving tasks or project objectives."<ref name="diver definitions"/>
{{div col end}}
'''Snorkelling'''
{{div col}}
* '''One Star Snorkel Diver''' – "a snorkel diver who is competent in the safe and correct use of relevant snorkel diving equipment used in a swimming pool or sheltered water. The snorkel diver is familiar with relevant personal equipment and its use in a sheltered open water area. The snorkel diver is ready to gain further open water training."<ref name="Snorkel Diver Standards">{{cite book| title= Snorkel Diver Standards| chapter-url= http://www.cmas.org/document?sessionId=&fileId=2166&language=1/| access-date= 29 January 2013| publisher= Confédération Mondiale des Activités Subaquatiques| chapter= Definition of Snorkel diver and Snorkel diver Instructor grades| archive-date= 18 June 2021| archive-url= https://web.archive.org/web/20210618014115/https://www.cmas.org/document?sessionId=&fileId=2166&language=1/| url-status= dead}}</ref>
* '''Two Star Snorkel Diver''' – "a snorkel diver who has gained some open water diving experience. The snorkel diver is considered ready to take part in dives with other snorkel divers, under supervision if a minor. The CMAS 2 star snorkel diver is considered trained."<ref name="Snorkel Diver Standards"/>
* '''Three Star Snorkel Diver''' – "A fully trained snorkel diver who has gained considerable experience in open water snorkel diving under various conditions. The three-star snorkel diver has acquired life-saving skills and can lead snorkel divers in open water dives."<ref name="Snorkel Diver Standards"/>
{{div col end}}
==== Speciality diver training programmes ====
Standards are provided for the following speciality training for recreational divers:<ref name="CMAS-S+P"/>
{{div col}}
* [[Apnea|Apnoea Diver Level I]]
* Apnoea Diver Level II
* Apnoea Diver Level III
* Disabled Diver: Open Water Diving Environment Level I
* Disabled Diver: Open Water Diving Environment Level II
* Disabled Diver: Open Water Diving Environment Level III
* {{annotated link|Nitrox diver|Enriched Air Nitrox Diver}}
* {{annotated link|Dry suit diver|Drysuit Diver}}
* {{annotated link|Altitude Diver}}
* {{annotated link|Underwater navigation|Underwater Navigation}}
* [[Underwater search and recovery|Search and Recovery Diver]]
* {{annotated link|Ice diver|Ice Diver}}
* [[Diving air compressor|Compressor Operator]]
* {{annotated link|Nitrox blender|Nitrox Gas Blender}}
* {{annotated link|Trimix blender|Trimix Gas Blender}}
* [[Cave diving|Cave Diver Level I (Cavern Diver)]]
* [[Diver propulsion vehicle|Recreational Scooter Diver]]
* [[Cardiopulmonary resuscitation]] (CPR) and [[Basic life support]] (BLS])
* [[Oxygen first aid|Oxygen Administration]]
* {{annotated link|Rescue Diver}}
* [[Trimix (breathing gas)|Recreational Trimix Diver]]
* Semi-Closed [[Rebreather]] Diver
* Advanced Semi-Closed Rebreather Diver
* Closed Circuit Rebreather Diver
* Children Diving Bronze Award
* Children Diving Gold Award
* Children Diving Silver Award
* Wreck Diver Level 1: – Autonomous, recreational, non-penetration [[wreck diving]].<ref>{{cite report |url=https://archives.cmas.org/document%3FsessionId%3D%26fileId%3D2158%26language%3D1&ved=2ahUKEwjUpvWG7LKIAxVi3gIHHQKcOu4QFnoECBcQAQ&usg=AOvVaw1YEsIuD8MSZ1V2vmc5cCB6 |title=Standard 2.B.27: CMAS Wreck Diver Level 1 Training Programme |chapter=Chapter 2 |work=CMAS International Diver Training Standards and Procedures Manual |author=((CMAS Technical Committee)) |access-date=8 September 2024 }}</ref>
* Wreck Diver Level 2:– Autonomous, recreational, penetration [[wreck diving]].<ref>{{cite report |url=https://archives.cmas.org/document?sessionId=&fileId=2159&language=1 |title=Standard 2.B.28: CMAS Wreck Diver Level 2 Training Programme|work=CMAS International Diver Training Standards and Procedures Manual |chapter= |author=((CMAS Technical Committee)) |access-date=8 September 2024 }}</ref>
{{div col end}}
* {{visible anchor|Self-Rescue Diver}} – [[Scuba gas planning]] skills, [[bailout to emergency gas supply]] carried by the diver, management of multiple gas cylinders, [[deployment of a decompression buoy]] from depth, [[Tethered ascent|tethered buoyant emergency ascent]], use of [[long hose regulator]], self-release from entanglement, and use of [[backup diving equipment]].<ref>{{cite web |url=https://archives.cmas.org/technique/self-rescue-diver-training-programme |title=Self-Rescue Diver Training Programme |website=archives.cmas.org |access-date=1 July 2024 |archive-date=27 September 2023 |archive-url=https://web.archive.org/web/20230927223024/https://archives.cmas.org/technique/self-rescue-diver-training-programme |url-status=live }}</ref><ref>{{cite web |url=https://archives.cmas.org/document?sessionId=&fileId=2965&language=1 |work=CMAS International Diver Training Standards and Procedures Manual |title=3.B.31 CMAS Syllabus for Self-Rescue Diver Training Programme / BOD no 181 ( 04-18-2013 ). Minimum Course Content |access-date=2024-07-01 |archive-date=2024-07-01 |archive-url=https://web.archive.org/web/20240701075146/https://archives.cmas.org/document?sessionId=&fileId=2965&language=1 |url-status=live }}</ref>
{{Expand section|Brief summary of what each qualification entails where there is no existing article|date=July 2024}}
====Technical diver training programmes====
Standards are provided for the following technical diver training grades:<ref name="CMAS-S+P"/>
{{div col |colwidth=30em}}
* {{annotated link|Advanced nitrox diver|Advanced Nitrox Diver}}
* Advanced Semi-Closed Rebreather Diver
* [[Cave diving|Cave Diver Level II (Apprentice Cave Diver)]]
* Cave Diver Level III (Full Cave Diver)
* [[Technical diving#Definition of technical diving#Gas mixes#Deep air/extended range diving|Extended Range Nitrox Diver]]
* [[Trimix (breathing gas)#Mixes#Naming conventions|Normoxic Trimix Diver]]
* [[Overhead environment]] Scooter
* Technical Scooter Diver
* Trimix Diver
* Advanced Trimix Diver
{{div col end}}
{{expand section|update and annotate to clarify|date=July 2024}}
==== Leadership diver training programmes ====
Standards are provided for the training of the following grades of recreational snorkel and scuba instructors:<ref name="CMAS-S+P"/>
{{div col}}
* '''{{visible anchor|One Star Snorkel Diver Instructor}}''' – "a CMAS 2 star snorkel diver who is interested in and has knowledge of practical snorkel diver instruction. The instructor is qualified to conduct practical lessons in a swimming pool and to teach the CMAS 1 star snorkel diver certificate. The instructor can be used as an assistant instructor in open water, but cannot plan an open water dive and lead a group of divers on his own."<ref name="Snorkel Diver Standards"/>
* '''{{visible anchor|Two Star Snorkel Diver Instructor}}''' – "an experienced one-star snorkel diver instructor who has the knowledge, skills, and experience required to lead and instruct 1, 2 and 3 Star snorkel diver students in the classroom, swimming pool, and open water. The experienced CMAS 2 Star snorkel diver instructor may assist in the training and education of CMAS 1 Star snorkel diver instructors."<ref name="Snorkel Diver Standards"/>
* '''{{visible anchor|One Star Instructor}}''' – "a three- or four-star diver who has demonstrated a knowledge of the techniques of diving instruction and has proven, under evaluation, to be competent in practical instructional skills and diving safety procedures: They are qualified to train and certify novice diving students in a full CMAS One-Star Diver scuba program."<ref name="diver definitions"/>
* '''{{visible anchor|Two Star Instructor}}''' – "an experienced one-star instructor who has the knowledge, skills, and experience required to teach groups of divers in the classroom, pool, and in open water, and to train qualified dive supervisors, assistant instructors and assist in the training & evaluation of One-Star Instructors. They are qualified to teach and certify all CMAS diver levels including snorkel instructor levels."<ref name="diver definitions"/>
* '''{{visible anchor|Three Star Instructor}}''' – "a highly experienced two-star instructor who is competent to train all grades of divers and instructors and able to take responsibility for instructor certification programs and the conduct of diving schools/centres and specialised training courses or events."<ref name="diver definitions"/>
{{div col end}}
====Instructor speciality grades====
Standards are provided for speciality training of assistants, [[dive master|dive supervisors]], snorkel instructors and scuba instructors:<ref name="CMAS-S+P"/>
{{div col}}
* Apnoea Instructor
* Instructors Assistant for Disabled Divers
* Instructor for Disabled Divers
* Instructor Trainer for Disabled Divers
* Nitrox Instructor
* Advanced Nitrox Instructor
* Nitrox Instructor Three Star
* Ice Diver Instructor
* Trimix Instructor
* Advanced Trimix Instructor
* Nitrox Gas Blender Instructor
* Trimix Gas Blender Instructor
* Cave Diving Instructor I (Cavern Diving Instructor)
* Cave Diving Instructor II (Full Cave Diving Instructor)
* Cave Diving Instructor III (Cave Diving Staff Instructor)
* Recreational Scooter Assistant
* Technical Scooter Assistant
* Overhead Environment Scooter Assistant
* Recreational Scooter Instructor
* Technical Scooter Instructor
* Overhead Environment Scooter Instructor
* Semi-Closed Rebreather Instructor
* Advanced Semi-Closed Rebreather
* Closed Circuit Rebreather Instructor
* Children Diving Dive Leader
* Children Diving Instructor
* Children Diving Instructor Trainer
{{div col end}}
== Scientific committee ==
===Role===
The committee considers its main task is to bring to the attention of the world underwater diving community, the important issues concerning the marine environment and how divers can play a major role in protecting it by serving as frontline observers of its overall health, particularly in respect to invasive species, coastal ecosystems and biodiversity.<ref name="about scientific">{{cite web|title=Standards of Scientific Committee|url=http://www.cmas.org/science/about-sci|publisher=Confédération Mondiale des Activités Subaquatiques|access-date=8 February 2013|archive-date=4 December 2022|archive-url=https://web.archive.org/web/20221204124313/https://www.cmas.org/science/about-sci|url-status=dead}}</ref>
Its officers who are elected from persons nominated at the CMAS General Assembly by affiliated national diving federations include the following positions – president, secretary, a number of general members and presidents of the following commissions – marine biology, marine archaeology, geology and professional relationships.<ref name="scientific"/>
===Scientific diving codes===
Over a 10-year period from 1977, the CMAS Scientific Committee was responsible for the development of the "Code of Practice for Scientific Diving" for [[UNESCO]]<ref name="Flemming">{{Citation
|editor-last=Flemming |editor-first=N.C.|editor2-last=Max |editor2-first=M.D.|others=Scientific Committee of Confédération Mondiale des Activités Subaquatiques|date=1988 |title=Code of Practice for Scientific Diving: Principles for the Safe Practice of Scientific Diving in Different Environments. UNESCO Technical Papers in Marine Science 53 |publisher=United Nations Educational, Scientific, and Cultural Organization, Div. of Marine Sciences |location=Paris (France) |issn=0503-4299 |oclc=18056894 |url=http://www.jodc.go.jp/info/ioc_doc/UNESCO_tech/080632eb.pdf |access-date=8 February 2013 |archive-url=https://web.archive.org/web/20110322213127/http://www.jodc.go.jp/info/ioc_doc/UNESCO_tech/080632eb.pdf |archive-date=22 March 2011 |url-status=live
}}</ref> in cooperation with [[National Sea Grant College Program|Sea Grant]]. {{citation needed| date=March 2013}}
===Qualifications===
The CMAS Scientific Committee oversees a system of diving standards and certification that operates in parallel to the CMAS International Diver Training Certification System.
The system was developed to which recognize the status of a diver who is qualified to dive in the course of research whilst employed. This internationally recognized standard of competence is a distinct advantage for working scientists who wish to travel between laboratories and institutes in different countries.
Known as the CMAS Scientific Diver Standard, the system consists of the following diver and instructor grades:
* CMAS Scientific Diver (CSD) (pre-requisite of CMAS 2 Star Diver plus scientific diver training)
* CMAS Advanced Scientific Diver (CASD) (pre-requisite of CMAS 3 Star Diver plus advanced scientific diver training)
* CMAS Scientific Diving Instructor (pre-requisite: CMAS 2 Star Instructor)
* CMAS Confirmed Scientific Diving Instructor (pre-requisite: CMAS 3 Star Instructor)
A programme of specialist courses both at entry and advanced levels in [[underwater archaeology]], [[freshwater biology]], [[marine biology]], [[marine geology]] and [[oceanology]] is also offered.
Training and certification (also known as brevets) for the above qualifications is available from organisations known as CMAS Scientific Centres (CSC).<ref name="Scientific diver">{{Citation| author = Scientific Committee of CMAS| editor-last = Norro| editor-first = Dr Alain| date = 2000| title = CMAS Standard for Scientific Diver| publisher = Scientific Committee of Confédération Mondiale des Activités Subaquatiques| url = http://www.geo.tu-freiberg.de/hydro/vorl_portal/wiss_tauchen/CMAS_ESD_AESD.pdf| access-date = 29 January 2013| archive-url = https://web.archive.org/web/20071212100047/http://www.geo.tu-freiberg.de/hydro/vorl_portal/wiss_tauchen/CMAS_ESD_AESD.pdf| archive-date = 12 December 2007| url-status = dead| df = dmy-all}}</ref>
== Recognitions, agreements and affiliations ==
=== Recognitions ===
Organisations which recognise CMAS as the international federation for underwater sport and activities include:
{{Colbegin}}
* [[International Olympic Committee]] (IOC)<ref name="ioc-wuf">{{cite web |url=http://www.olympic.org/content/the-ioc/recognised-sport-federations/federation9/ |title=World Underwater Federation |publisher=[[IOC]] |access-date=1 September 2012 |archive-date=19 August 2014 |archive-url=https://web.archive.org/web/20140819061355/http://www.olympic.org/content/the-ioc/recognised-sport-federations/federation9/ |url-status=live }}</ref><ref name="arisf">{{cite web |url=http://www.arisf.org/members/Underwater |title=Members: CMAS – World Underwater Federation |publisher=Association of IOC Recognised International Sports Federations (ARISF) |access-date=1 September 2012 |url-status=dead |archive-url=https://web.archive.org/web/20140714190236/http://www.arisf.org/members/Underwater |archive-date=14 July 2014 }}</ref>
* [[UNESCO]]<ref name="unesco-wuf">{{cite web |url=http://ngo-db.unesco.org/r/or/en/1100067200 |title=World Underwater Federation |publisher=[[United Nations Educational, Scientific and Cultural Organization]] |access-date=1 September 2012 |archive-url=https://web.archive.org/web/20120702014221/http://ngo-db.unesco.org/r/or/en/1100067200 |archive-date=2 July 2012 |url-status=dead }}</ref>
* [[SportAccord]] (formerly General Association of International Sports Federations (GAISF))<ref name="gaisf">{{cite web |url=http://www.sportaccord.com/en/members/index.php?idContent=644&idIndex=32 |title=List of International Sports Federations |year=2012 |publisher=SportAccord |access-date=1 September 2012 |archive-url=https://web.archive.org/web/20120507073823/http://www.sportaccord.com/en/members/index.php?idContent=644&idIndex=32 |archive-date=7 May 2012 |url-status=dead |df=dmy-all }}</ref>
* [[World Games]]<ref name="worldgames">{{cite web |url=http://www.theworldgames.org/the-sports/sports/trend-sports/underwater-sports-fin-swimming |title=Underwater Sports: Fin Swimming |year=2012 |publisher=International World Games Association (IWGA) |access-date=1 September 2012 |archive-url=https://web.archive.org/web/20130709223418/http://www.theworldgames.org/the-sports/sports/trend-sports/underwater-sports-fin-swimming |archive-date=9 July 2013 |url-status=dead }}</ref>
* [[World Anti-Doping Agency]] (WADA)<ref name="wada">{{cite web |url=http://wada-ama.org/en/Resources/List-of-International-Federations/ |archive-url=https://archive.today/20130416025336/http://wada-ama.org/en/Resources/List-of-International-Federations/ |url-status=dead |archive-date=April 16, 2013 |title=List of International Federations |year=2012 |publisher=World Anti-Doping Agency |access-date=1 September 2012 }}</ref>
{{Colend}}
=== Agreements ===
* Agreement with the [[International Life Saving Federation]] (ILSF) was signed on 21 October 1994 regarding recognition of ILSF's rescue diver and instructors.<ref name="ordc">{{cite web|title=OVERVIEW OF RESCUE DIVER'S CERTIFICATION|url=http://www.ilsf.org/sites/ilsf.org/files/filefield/APP%2016%20ILS%20Overview%20Rescue%20Diver%27s%20Certification.pdf|publisher=International Life Saving Federation|access-date=17 July 2013|archive-url=https://web.archive.org/web/20121101123240/http://www.ilsf.org/sites/ilsf.org/files/filefield/APP%2016%20ILS%20Overview%20Rescue%20Diver%27s%20Certification.pdf|archive-date=1 November 2012|url-status=dead|df=dmy-all}}</ref>
* Agreement with the [[Professional Association of Diving Instructors]] (PADI) was signed on 30 January 1998 in Anaheim regarding a system of recognition for scuba divers moving between the CMAS and PADI training schemes.<ref name="C.M.A.S. PADI Agreement">{{cite web |url=http://www.ndf.no/getfile.php/1068/cmaspadi_a.PDF|title= C.M.A.S. / PADI Agreement |publisher= Norges Dykkeforbund |access-date=1 September 2012 |archive-url=https://web.archive.org/web/20120508230305/http://www.ndf.no/getfile.php/1068/cmaspadi_a.PDF |archive-date=8 May 2012 |url-status=dead }}</ref>
* Agreement with the [[Nautical Archaeology Society]] (NAS) was signed on 27 April 2002 in Brussels to 'explore the possibilities of cooperation between NAS and CMAS in the field of underwater archaeology' including "exchange of information" and mutual recognition of training programs.{{Citation needed|date=October 2012}}
=== Affiliations ===
* [[International Union for Conservation of Nature]] (IUCN)<ref name="IUCN">{{cite web|url=http://www.iucn.org/about/union/members/who_members/members_database/|title=Members' database, International NGO|publisher=International Union for Conservation of Nature|access-date=1 September 2012|archive-date=2 December 2012|archive-url=https://web.archive.org/web/20121202045502/http://www.iucn.org/about/union/members/who_members/members_database/|url-status=live}}</ref>
== Member federations ==
In Feb 2024, 105 nations:<ref>{{cite web | url=https://www.cmas.org/national-federations/ | title=National Federations | access-date=2024-02-12 | archive-date=2024-02-12 | archive-url=https://web.archive.org/web/20240212221447/https://www.cmas.org/national-federations/ | url-status=live }}</ref>
* Africa: 15 nations <ref>{{cite web | url=https://www.cmas.org/national-federations/africa.html | title=AFRICA | access-date=2024-02-12 | archive-date=2024-02-12 | archive-url=https://web.archive.org/web/20240212221935/https://www.cmas.org/national-federations/africa.html | url-status=live }}</ref>
* America: 15 nations <ref>{{cite web | url=https://www.cmas.org/national-federations/america.html | title=America | access-date=2024-02-12 | archive-date=2024-02-12 | archive-url=https://web.archive.org/web/20240212221938/https://www.cmas.org/national-federations/america.html | url-status=live }}</ref>
* Asia: 27 nations <ref>{{cite web | url=https://www.cmas.org/national-federations/asia.html | title=ASIA | access-date=2024-02-12 | archive-date=2024-02-12 | archive-url=https://web.archive.org/web/20240212221934/https://www.cmas.org/national-federations/asia.html | url-status=live }}</ref>
* Europe: 40 nations <ref>{{cite web | url=https://www.cmas.org/national-federations/europe.html | title=EUROPE | access-date=2024-02-12 | archive-date=2024-02-12 | archive-url=https://web.archive.org/web/20240212221936/https://www.cmas.org/national-federations/europe.html | url-status=live }}</ref>
* Oceania: 3 nations <ref>{{cite web | url=https://www.cmas.org/national-federations/oceania.html | title=Oceania }}</ref>
CMAS membership consists of at least 130 national federations from five continents:<ref name="aboutcmas"/><ref name="f">{{cite web|title=Federations|url=http://www.cmas.org/federation-list|publisher=Confédération Mondiale des Activités Subaquatiques|access-date=31 March 2018|archive-date=20 October 2020|archive-url=https://web.archive.org/web/20201020210417/https://www.cmas.org/federation-list|url-status=dead}}</ref>
{| class="wikitable" width="100%" cellspacing="0" cellpadding="3" border="1" bgcolor="white"
! scope="col" | Africa
! scope="col" | America
! scope="col" | Asia
! scope="col" | Europe
! scope="col" | Oceania
|-
| style="vertical-align:top;" | {{ubl
| {{Flag|Algeria}} (<small>Fédération Algerienne De Sauvetage De Secourisme Et Des Activites Subaquatiques</small>)
| {{Flag|Cape Verde}} (<small>Federacao Cabo Verde Desportivo Subm. José Maria Aquatico Herrer</small>)
| {{Flag|Djibouti}} (<small>Federation Djiboutienne De Sports Subaquatiques</small>)
| {{Flag|Egypt}} (<small>Egyptian Underwater & Lifesaving Federation</small>)
| {{Flag|Kenya}} (<small>Kenya Lifesaving Federation</small>)
| {{Flag|Madagascar}} (<small>Fédération Malgache De Plongée Sous Marinem</small>)
| {{Flag|Morocco}} (<small>Federation Royale Marocaine De Plongée Et Activites Subaquatiques</small>)
| {{Flag|Mauritius}} (<small>Mauritian Scuba Diving Association</small>)
| {{Flag|Namibia}} (<small>Namibia Underwater Federation</small>)
| {{Flag|Seychelles}} (<small>Scuba Divers Federation Of Seychelles</small>)
| {{Flag|Seychelles}} (<small>Submarine Activity Federation Seychelles</small>)
| {{Flag|South Africa}} (<small>CMAS Instructors South Africa (CMAS-ISA</small>)
| {{Flag|South Africa}} (<small>[[South African Underwater Sports Federation]] (SAUSF)</small>)
| {{Flag|Tunisia}} (<small>Fédération Des Activites Subaquatiques De Tunisie</small>)
| {{Flag|Tunisia}} (<small>Fédération Tunisienne Des Pêches Sportives</small>)
}}
| style="vertical-align:top;" | {{ubl
| {{Flag|Argentina}} (<small>FederaciÓn Argentina De Actividades Subacuaticas</small>)
| {{Flag|Argentina}} (<small>Asociación De Hockey Subacuático De Argentina</small>)
| {{Flag|Brazil}} (<small>Confederaço Brasileira De Pesca E Desportos SubaquÁticos</small>)
| {{Flag|Canada}} (<small>Canadian Underwater Games Association</small>)
| {{Flag|Canada}} (<small>Association Des Moniteurs De La Cmas Qc</small>)
| {{Flag|Canada}} (<small>Canadian Diving Program</small>)
| {{Flag|Chile}} (<small>Federación Deportiva Nacional De Actividades Subacuáticas Y Salvamento Acuático</small>)
| {{Flag|Colombia}} (<small>Federacion Colombiana De Actividades Subauaticas</small>)
| {{Flag|Cuba}} (<small>Federacion Cubana De Actividades Subacuaticuas</small>)
| {{Flag|Ecuador}} (<small>Federación Ecuatoriana De Buceo Y Actividades Subacuaticas</small>)
| {{Flag|Mexico}} (<small>Federacion Mexicana De Actividades Subacuaticas A.C.</small>)
| {{Flag|Mexico}} (<small>International Diving Instructors Mexico</small>)
| {{Flag|Peru}} (<small>Federacion Deportiva Peruana De Actividades Subacuaticas</small>)
| {{Flag|United States}} (<small>United States Underwater Sport Federation</small>)
| {{Flag|United States}} (<small>U.S. Freediving Federation</small>)
| {{Flag|United States}} (<small>[[Underwater Society of America|Underwater Society Of America]]</small>)
| {{Flag|Uruguay}} (<small>Federacion Uruguaya De Actividades Subacuaticas</small>)
| {{Flag|Venezuela}} (<small>Federacion Venezolana De Actividades Subacuaticas</small>)
}}
| style="vertical-align:top;" | {{ubl
| {{Flag|China}} (<small>Chinese Underwater Association</small>)
| {{Flag|Hong Kong}} (<small>Hong Kong Underwater Association</small>)
| {{Flag|India}} (<small>Underwater Sport Association India</small>)
| {{Flag|Indonesia}} (<small>Indonesian Subaquatic Sport Association</small>)
| {{Flag|Iran}} (<small>Islamic Republic Of Iran Lifesaving Federation</small>)
| {{Flag|Israel}} (<small>[[Israeli Diving Federation]]</small>)
| {{Flag|Japan}} (<small>Japan Cmas Instructor Association</small>)
| {{Flag|Japan}} (<small>Japan Underwater Sports Federation</small>)
| {{Flag|Japan}} (<small>Japan Educational Facilities Federation</small>)
| {{Flag|Japan}} (<small>Jcs</small>)
| {{Flag|Japan}} (<small>Marine Techno Educational System Diving Division</small>)
| {{Flag|Japan}} (<small>Kansai Sports Diving Federation Japan</small>)
| {{Flag|Jordan}} (<small>Royal Jordanian Marine Sports Federation</small>)
| {{Flag|Kazakhstan}} (<small>Underwater Federation Republic Of Kazakhstan</small>)
| {{Flag|Kuwait}} (<small>Kuwait Academy For Diving & Swimming</small>)
| {{Flag|Kuwait}} (<small>Kuwait Diving And Lifesaving Committee</small>)
| {{Flag|Kyrgyzstan}} (<small>Kyrgyz Underwater Federation</small>)
| {{Flag|Lebanon}} (<small>Lebanon Water Festival</small>)
| {{Flag|Malaysia}} (<small>Malayan Sub Aqua Club</small>)
| {{Flag|Malaysia}} (<small>Malaysia Coastal Subaquatic Federation</small>)
| {{Flag|Maldives}} (<small>Maldives Underwater Federation</small>)
| {{Flag|Northern Mariana Islands}} (<small>Toa Engineering Corporation</small>)
| {{Flag|Palestine}} (<small>Palestinian Swimming & Aquatic Sport Federation</small>)
| {{Flag|Philippines}} (<small>Philippine Federation Of Cmas Underwater Activities</small>)
| {{Flag|Philippines}} (<small>Philippine Association On Underwater Activities</small>)
| {{Flag|Saudi Arabia}} (<small>Saudi Arabia Maritime Sports Federation</small>)
| {{Flag|Singapore}} (<small>Singapore Underwater Federation</small>)
| {{Flag|South Korea}} (<small>Asia Diving Council</small>)
| {{Flag|South Korea}} (<small>Korea Underwater Association</small>)
| {{Flag|Syria}} (<small>Syrian Underwater Sport Federation</small>)
| {{Flag|Chinese Taipei}} (<small>Chinese Taipei Underwater Federation</small>)
| {{Flag|Chinese Taipei}} (<small>Taiwan Technical & Science Diving Association</small>)
| {{Flag|Thailand}} (<small>Association Of Thailand Underwater Sports</small>)
| {{Flag|United Arab Emirates}} (<small>Fujairah International Marine Club</small>)
| {{Flag|Vietnam}} (<small>Vietnam Aquatic Sports Association</small>)
}}
| style="vertical-align:top;" | {{ubl
| {{Flag|Armenia}} (<small>Armenian Federation Of Underwater Sports</small>)
| {{Flag|Austria}} (<small>Austrian Diving Federation</small>)
| {{Flag|Belarus}} (<small>Belarus Federation Of Underwater Sport</small>)
| {{Flag|Belgium}} (<small>Royal Belgian Diving Federation</small>)
| {{Flag|Belgium}} (<small>Groupe Belge De Recherches Scientifiques Sous-Marines</small>)
| {{Flag|Bosnia and Herzegovina}} (<small>Diving Association Of Bosnia And Herzegovina</small>)
| {{Flag|Bulgaria}} (<small>Bulgarian National Association Of Underwater Activity</small>)
| {{Flag|Bulgaria}} (<small>Federation Bulgare De Peche Sous Marine</small>)
| {{Flag|Croatia}} (<small>Croatian Diving Federation</small>)
| {{Flag|Croatia}} (<small>Croatian Federation Of Sports Fishing On Sea</small>)
| {{Flag|Cyprus}} (<small>Cyprus Federation Of Underwater Activities</small>)
| {{Flag|Czech Republic}} (<small>Divers Association Of Czech Republic</small>)
| {{Flag|Denmark}} (<small>Danish Sports Diver Federation</small>)
| {{Flag|Estonia}} (<small>Estonian Underwater Federation</small>)
| {{Flag|Finland}} (<small>Finnish Divers' Federation</small>)
| {{Flag|France}} (<small>[[Fédération Française d'Études et de Sports Sous-Marins|Fédération française d'études et de sports sous-marins]]</small>)
| {{Flag|Georgia}} (<small>Georgian Underwater Sports Federation</small>)
| {{Flag|Germany}} (<small>Verband Deutscher Sporttaucher E.V.</small>)
| {{Flag|Greece}} (<small>Hellenic Federation For Underwater Activities & Sportfishing</small>)
| {{Flag|Greece}} (<small>Hellenic Swimming Federation</small>)
| {{Flag|Hungary}} (<small>Hungarian Divers Federation</small>)
| {{Flag|Hungary}} (<small>Underwater Explorers' Federation</small>)
| {{Flag|Ireland}} (<small>[[Comhairle Fo-Thuinn|Irish Underwater Federation]]</small>)
| {{Flag|Italy}} (<small>Federazione Italiana Pesca Sportiva E Attivita Subacquee</small>)
| {{Flag|Italy}} (<small>Comitato Italiano Ricerche Studi Subaquei</small>)
| {{Flag|Italy}} (<small>International Academy Of Underwater Sciences And Techniques</small>)
| {{Flag|Italy}} (<small>Nadd Global Diving Agency</small>)
| {{Flag|Italy}} (<small>Asd Acqua Team</small>)
| {{Flag|Italy}} (<small>Union Italienne Sport Pour Tous</small>)
| {{Flag|Italy}} (<small>Associazione Cmas Diving Center Italia</small>)
| {{Flag|Italy}} (<small>Associaziona Nazionale Istruttori Subacquei</small>)
| {{Flag|Italy}} (<small>[[Federazione Italiana Attività Subacquee|Federazione Italiana Attivita Subacquee]]</small>)
| {{Flag|Italy}} (<small>Federazione Italiana Sport Acquatici</small>)
| {{Flag|Italy}} (<small>Asi-Alleanza Sportiva Italiana Divisione Subacquea</small>)
| {{Flag|Italy}} (<small>Esa Worldwide</small>)
| {{Flag|Italy}} (<small>Albatros Progetto Paolo Pinto</small>)
| {{Flag|Latvia}} (<small>Cmas Baltic Sporta Biedrtba</small>)
| {{Flag|Latvia}} (<small>Latviajas Zemudens Sporta Federacija</small>)
| {{Flag|Liechtenstein}} (<small>Liechtensteiner Tauchsport Verband</small>)
| {{Flag|Lithuania}} (<small>Lithuanian Underwater Sport Federation</small>)
| {{Flag|Luxembourg}} (<small>Federation Luxembourgeoise</small>)
| {{Flag|North Macedonia}} (<small>Macedonian Diving Federation</small>)
| {{Flag|Malta}} (<small>Federation Of Underwater Activities Malta</small>)
| {{Flag|Moldova}} (<small>Federation Of Underwater Activities Of The Republic Of Moldova</small>)
| {{Flag|Monaco}} (<small>Federation Monegasque Des Activites Subaquatiques</small>)
| {{Flag|Montenegro}} (<small>Diving Association Of Montenegro</small>)
| {{Flag|Netherlands}} (<small>[[Nederlandse Onderwatersport Bond]]</small>)
| {{Flag|Norway}} (<small>Norwegian Diving Federation</small>)
| {{Flag|Poland}} (<small>Underwater Activity Commission Polish Tourist Country-Lovers Society</small>)
| {{Flag|Poland}} (<small>Polish Underwater Federation</small>)
| {{Flag|Poland}} (<small>Commission Diving Nationale Defense League</small>)
| {{Flag|Portugal}} (<small>Federation Portugaise D'Activites Subaquatiques</small>)
| {{Flag|Russia}} (<small>Russian Underwater Federation</small>)
| {{Flag|San Marino}} (<small>Federazione Sammarinese Attivita Subacquee</small>)
| {{Flag|Serbia}} (<small>Serbian Underwater Association</small>)
| {{Flag|Slovakia}} (<small>Slovak Diving Association</small>)
| {{Flag|Slovenia}} (<small>Slovenian Diving Federation</small>)
| {{Flag|Spain}} (<small>[[Federación Española de Actividades Subacuáticas|Federacion Espanola De Actividades Subacuaticas]]</small>)
| {{Flag|Sweden}} (<small>Swedish Sportsdiving Federation</small>)
| {{Flag|Switzerland}} (<small>Schweizer Unterwassersport-Verband</small>)
| {{Flag|Switzerland}} (<small>Cmas.Ch</small>)
| {{Flag|Turkey}} (<small>[[Turkish Underwater Sports Federation]]</small>)
| {{Flag|Ukraine}} (<small>Public Organization Ukrainian Federation Of Underwater Sport And Underwater Activities</small>)
| {{Flag|United Kingdom}} (<small>[[Sub-Aqua Association]]</small>)
| {{Flag|United Kingdom}} (<small>British Spearfishing Association</small>)
}}
| style="vertical-align:top;" | {{ubl
| {{Flag|Australia}} (<small>[[Australian Underwater Federation]]</small>)
| {{Flag|New Zealand}} (<small>New Zealand Underwater Association</small>)
| {{Flag|Tahiti}} (<small>Fédération Tahitienne De Sports Subaquatique De Compétition</small>)
}}
|}
== See also ==
{{div col}}
===General===
*{{annotated link|List of diver certification organizations}}
===Key people===
* {{annotated link|Frédéric Dumas}}
* {{annotated link|Philippe Tailliez}}
===Organisations===
*{{annotated link|CMAS Europe}}
*{{annotated link|Scuba Educators International}}
*{{annotated link|YMCA SCUBA Program}}
===Sport===
*{{annotated link|Finswimming World Championships}}
*{{annotated link|Underwater Hockey World Championships}}
*{{annotated link|Underwater Orienteering World Championships}}
*{{annotated link|Underwater Photography World Championships}}
*{{annotated link|Underwater Rugby World Championships}}
{{div col end}}
==References==
{{reflist}}
== External links ==
*[http://www.cmas.org CMAS homepage]
*[https://web.archive.org/web/20130516195511/http://history.cmas.org History of CMAS website]
*[https://web.archive.org/web/20240212224554/https://www.cmas.org/ History Results]
*[https://www.sportalsub.net/en/ Results]
*[http://www.cmas-america.org CMAS American Zone] (in Spanish, English and Portuguese)
*[http://www.cmasasia.org Asian Underwater Federation] (CMAS Asia)
*[http://www.cmas-europe.net CMAS Europe homepage]
{{International Sports Federations}}
{{Underwater diving|recdiv}}
{{Authority control}}
{{DEFAULTSORT:Confederation Mondiale Des Activites Subaquatiques}}
[[Category:Underwater sports organizations]]
[[Category:Finswimming]]
[[Category:Freediving]]
[[Category:Underwater hockey governing bodies| ]]
[[Category:Underwater orienteering]]
[[Category:Underwater photography (sport)]]
[[Category:Underwater rugby]]
[[Category:Underwater diving training organizations]]
[[Category:Sports organizations established in 1959]]
[[Category:1950s establishments in Monaco]]
[[Category:Underwater diver organizations]]
[[Category:Association of IOC Recognised International Sports Federations]]
boj4w0ohginufr1xr6vd60qdctgvwjb
Jump (Every Little Thing song)
0
27121
360854
2025-06-08T10:53:32Z
en>Lulusword
0
Add ref, ref section, update tag #JUN25
360854
wikitext
text/x-wiki
{{short description|2001 single by Every Little Thing}}
{{More citation needed|date=June 2025}}
{{Infobox song
| name = Jump
| cover = ELT_Jump.jpg
| alt =
| type = single
| artist = [[Every Little Thing (band)|Every Little Thing]]
| album = [[Many Pieces]]
| released = October 17, 2001
| recorded =
| studio =
| venue =
| genre = [[J-pop]]
| length = 4:06 ("Jump" only)
| label = [[AVEX Records|avex trax]]
| writer = [[Kaori Mochida]]
| producer =
| prev_title = [[Graceful World]]
| prev_year = 2001
| next_title = [[Kioku (Every Little Thing song)|Kioku]]
| next_year = 2002
}}
"'''Jump'''" is a song by the [[Japan]]ese [[J-pop]] group [[Every Little Thing (band)|Every Little Thing]], released as their 20th single on October 17, 2001. It is their first song composed by [[Kaori Mochida]].
==Track listing==
# Jump <small>(Words & music - Kaori Mochida)</small>
# Jump (Cubismo Graphico mix)
# Jump (iInstrumental)
==Charts==
{| class="wikitable"
!Chart (2001)
!Peak<br>position
|-
|Japan [[Oricon Singles Chart]]
|align="center"|7<ref>{{cite web |url=https://www.oricon.co.jp/prof/7747/products/458601/1/ |title=jump |work=[[Oricon]] |access-date=June 8, 2025 |language=ja}}</ref>
|}
==References==
{{Reflist}}
==External links==
* [https://web.archive.org/web/20060228162723/http://avexnet.jp/item/every/disc/product/AVCD-30223.html "Jump"] information at [[AVEX Records|Avex Network]].
* [https://www.oricon.co.jp/prof/7747/products/458601/1/ "Jump"] information at [[Oricon]].
{{Every Little Thing singles}}
{{authority control}}
[[Category:2001 singles]]
[[Category:2001 songs]]
[[Category:Every Little Thing (band) songs]]
[[Category:Songs written by Kaori Mochida]]
[[Category:Avex Trax singles]]
{{2000s-Japan-single-stub}}
mz0iwxewrt29xtteqrwck4jci2pj3uf
360855
360854
2026-05-18T04:58:19Z
ChiK
1136
೧ revisions imported from [[:en:Jump_(Every_Little_Thing_song)]]
360854
wikitext
text/x-wiki
{{short description|2001 single by Every Little Thing}}
{{More citation needed|date=June 2025}}
{{Infobox song
| name = Jump
| cover = ELT_Jump.jpg
| alt =
| type = single
| artist = [[Every Little Thing (band)|Every Little Thing]]
| album = [[Many Pieces]]
| released = October 17, 2001
| recorded =
| studio =
| venue =
| genre = [[J-pop]]
| length = 4:06 ("Jump" only)
| label = [[AVEX Records|avex trax]]
| writer = [[Kaori Mochida]]
| producer =
| prev_title = [[Graceful World]]
| prev_year = 2001
| next_title = [[Kioku (Every Little Thing song)|Kioku]]
| next_year = 2002
}}
"'''Jump'''" is a song by the [[Japan]]ese [[J-pop]] group [[Every Little Thing (band)|Every Little Thing]], released as their 20th single on October 17, 2001. It is their first song composed by [[Kaori Mochida]].
==Track listing==
# Jump <small>(Words & music - Kaori Mochida)</small>
# Jump (Cubismo Graphico mix)
# Jump (iInstrumental)
==Charts==
{| class="wikitable"
!Chart (2001)
!Peak<br>position
|-
|Japan [[Oricon Singles Chart]]
|align="center"|7<ref>{{cite web |url=https://www.oricon.co.jp/prof/7747/products/458601/1/ |title=jump |work=[[Oricon]] |access-date=June 8, 2025 |language=ja}}</ref>
|}
==References==
{{Reflist}}
==External links==
* [https://web.archive.org/web/20060228162723/http://avexnet.jp/item/every/disc/product/AVCD-30223.html "Jump"] information at [[AVEX Records|Avex Network]].
* [https://www.oricon.co.jp/prof/7747/products/458601/1/ "Jump"] information at [[Oricon]].
{{Every Little Thing singles}}
{{authority control}}
[[Category:2001 singles]]
[[Category:2001 songs]]
[[Category:Every Little Thing (band) songs]]
[[Category:Songs written by Kaori Mochida]]
[[Category:Avex Trax singles]]
{{2000s-Japan-single-stub}}
mz0iwxewrt29xtteqrwck4jci2pj3uf
The Partisan
0
27122
360856
2026-05-16T22:42:31Z
en>MiitomoChris
0
360856
wikitext
text/x-wiki
{{Short description|1943 song by Anna Marly and Emmanuel d'Astier, popularised by Leonard Cohen in 1969}}
{{Other uses|Partisan (disambiguation)}}
{{Infobox song
| name = La Complainte du partisan
| type = song
| artist = [[Anna Marly]]
| language = French
| English_title = The lament of the partisan
| published = {{Start date|1945}}
| released = {{Start date|1943}}
| genre =
* [[Folk music|Folk]]
* [[chanson]]<!-- This literally means "song" in French -->
| length = {{Duration|m=3|s=38}}
| composer = [[Anna Marly]]
| lyricist = {{Nowrap|[[Emmanuel d'Astier de La Vigerie]]}} {{a.k.a.}} Bernard
}}
"'''The Partisan'''" is an [[anti-fascist]] anthem about the [[French Resistance]] in World War II. The song was composed in 1943 by Russian-born [[Anna Marly]] (1917–2006), with lyrics by French Resistance leader [[Emmanuel d'Astier de La Vigerie]] (1900–1969), and originally titled "'''La Complainte du partisan'''" (English: "The [[lament]] of the partisan"). Marly performed it and other songs on the [[BBC]]'s French service, through which she and her songs were an inspiration to the Resistance. A number of French artists have recorded and released versions of the song since, but it is better recognised globally in its significantly, both musically and in the meaning of its lyrics, different English adaptation by [[Hy Zaret]] (1907–2007), best known as the lyricist of "[[Unchained Melody]]".
Canadian singer-songwriter [[Leonard Cohen]] (1934–2016) recorded his version, using Zaret's adaptation, and released it on his 1969 album ''[[Songs from a Room]]'', and as a 7-inch single in Europe. Cohen's version re-popularised the song and is responsible for the common misconception that the song was written by Cohen. It has inspired many other artists to perform, record and release versions of the song, including American [[Joan Baez]] (born 1941), on her 1972 album ''[[Come from the Shadows]]'', and with the title "'''Song of the French Partisan'''", Canadian [[Buffy Sainte-Marie]] (born {{circa|1941}}) and Israeli [[Esther Ofarim]] (born 1941).
==La Complainte du partisan==
[[File:Anna Marly, laissez-passer.png|thumb|upright=1|The [[Free French Forces]] pass of Anna Marly 1942]]
[[File:Liberation of Marseille, August 1944.jpg|thumb|upright=1|{{Coord|43.2942765|N|5.3743739|E|name=Approximate position of Emmanuel d'Astier in 1944 photograph}}; [[Emmanuel d'Astier de La Vigerie]] (far right) with [[:fr:André Diethelm|André Diethelm]] reviewing troops on the wharf of Rive-Neuve in liberated [[Marseille]] in 1944|alt=A group of men in suits and military uniforms, marching past, while admiring, a group of saluting soldiers]]
{{Further|Anna Marly|Emmanuel d'Astier de La Vigerie}}
Anna Marly was born in [[Saint Petersburg|Petrograd]] on October 30, 1917, and after her father was murdered by the [[Bolsheviks]], she escaped with her mother and sister to a Russian colony in [[Menton]], south-eastern France. Her artistic talents were encouraged from an early age; she was taught guitar by [[Sergei Prokofiev]], and by age sixteen, was dancing in the [[Ballets Russes]] in Paris. Becoming refugees upon the outbreak of World War II, her Dutch aristocrat husband and she travelled to London, arriving in 1941.{{Refn
| group = g
| name = martin, kirkup group
| {{Plainlist|
* {{Nowrap|Martin, ''The New York Times''}} {{R|martin nytimes}}
* {{Nowrap|Kirkup, ''The Independent''}} {{R|kirkup marly obit}}
}}
}}{{R|telegraph marly obit}}
Emmanuel d'Astier de La Vigerie was born in Paris on January 6, 1900, and after studying at the private high school [[Lycée privé Sainte-Geneviève|Sainte-Geneviève]] in [[Versailles (city)|Versailles]], he joined the [[École Navale]] (the French naval academy, in charge of the education of the officers of the French Navy) in 1919. Resigning the navy in 1931, d'Astier began a career in journalism, writing for ''Marianne'' and ''[[Vu (magazine)|VU]]''. With the outbreak of World War II in 1939, he was mobilised to work at the <em>centre de renseignements maritimes de Lorient</em> (English: <em>maritime information center of [[Lorient]]</em>) in north-western France, until the [[Fall of France]] in 1940. Refusing the [[Armistice of 22 June 1940|armistice with Germany]], he co-founded the Resistance movement <em>[[:fr:Libération-Sud|La Dernière Colonne]]</em> (English: <em>the Last Column</em>), publishing counter-propaganda against cooperation with Germany, and worked as an editor of the newspaper ''[[La Montagne (newspaper)|La Montagne]]''. After <em>the Last Column</em> was decimated by arrests in 1941, he went into hiding under the pseudonym ''Bernard''. By 1943, after meetings in London with [[Charles de Gaulle]], and in Washington with the United States' [[Franklin D. Roosevelt|President Roosevelt]], to secure the formation and recognition of the [[Free French Forces]], he again visited London as the Commissioner for Political Affairs of [[Mouvements Unis de la Résistance|le Directoire des Mouvements unis de Résistance]] (English: the Directory of United Resistance Movements).{{Refn
| group = g
| name = dAstier group
| {{Plainlist|
* {{Nowrap|Musée de l'Ordre de la Libération}} {{R|order of liberation}}
* {{Nowrap|fondation de la résistance}} {{R|fondation resistance}}
* {{Nowrap|Bibliothèque nationale de France (BnF)}} {{R|bnf dAstier}}
* {{Nowrap|King, ''Journal of Contemporary History''}} {{R|king dAstier}}
}}
}}
Jonathan H. King wrote, of d'Astier, in his article "Emmanuel d'Astier and the Nature of the French Resistance" for the ''Journal of Contemporary History'':{{R|king dAstier}}
<blockquote>Few men were at the centre of the Resistance, for the reason that its centre could rarely be defined and was rarely stable. Even fewer would have the necessary literary and verbal self-consciousness to achieve the goals [of subjectively documenting historical reality]. One who was at the centre and who did have this self-consciousness was Emmanuel d'Astier.</blockquote> and that, in his efforts to organise the Resistance, <blockquote>in his own words, d'Astier was seeking the strength of "popular forces, those forces which alone can change our dreams into reality, adventure into history, aesthetics into politics".</blockquote>
It was in London, in 1943, while Marly ran a [[hostel]] for French exiles,{{R|ratcliff cohen}} that she wrote the anti-fascist anthem{{R|craig book}} "La Complainte du partisan", with lyrics by d'Astier,{{R|jones oc}} going on to perform it and her other songs on [[Radio Londres]] (English: Radio London), the French Resistance radio operated by the Free French Forces, through the British Broadcasting Corporation.{{Refn |group=g |name=martin, kirkup group}}{{R|reilly gordon}} It was at this time that she also wrote "The March of the Partisans", with English lyrics by the Russian ambassador's daughter, Louba Krassine. The French exiles, [[Joseph Kessel]] and [[Maurice Druon]], also resident in London, translated it into French for play on Radio Londres and it became "[[Le Chant des Partisans]]" (English: "Song of the Partisans"), an unofficial French anthem towards the end of the war.{{Refn |group=g |name=martin, kirkup group}}
Marly played guitar and Druon and d'Astier whistled the melody while they were writing the song.<ref>André Gillois, Histoire secrète des Français à Londres de 1940 à 1944 (Paris: Hachette, 1973), 397.</ref> It was performed by Anna Marly, broadcast by the [[BBC]] and adopted by the [[maquis (WW2)|maquis]]. Marly, Druon, along with [[Claude Dauphin (actor)|Claude Dauphin]], and [[Andre Gillois]] all regularly whistled the song on the BBC right after Marly's singing.<ref>https://www.jstor.org/stable/1260357</ref><ref>https://www.smh.com.au/national/songwriter-and-soldier-gave-france-hope-in-darkest-hours-20090423-agm1.html</ref><ref>https://www.thetimes.com/culture/tv-radio/article/anna-marly-03fp5jl0rwf?eafs_enabled=false</ref>
Marly's songs, singing and whistling on Radio Londres, were an inspiration to the French Resistance and earned her the credit "[[troubadour]] of the Resistance" from General de Gaulle, leader of the French Free Forces.{{Refn |group=g |name=martin, kirkup group}} D'Astier was to become a Chevalier de la Légion d'Honneur (English: Knight of the [[Legion of Honour]]), Compagnon de la Libération (English: [[Order of Liberation|Companion of the Liberation]]) and awarded the [[Croix de Guerre 1939–1945 (France)|Croix de Guerre 1939–1945]].{{R|order of liberation}} In Paris, 1945, [[:fr:Raoul Breton|Raoul Breton]] published the "La Complainte du partisan" [[sheet music]] with lyrics by d'Astier credited to ''Bernard'',{{R|bnf partisan}} his Resistance [[code name]].{{R|martin nytimes}}
===Structure, content and context===
In their examination of the songs of Anna Marly, the [[:fr:Académie de Lyon (éducation)|Académie de Lyon]] describe "La Complainte du partisan" as "{{lang|fr|une vision déchirante de l'engagement des résistants}}" (English: "a heartbreaking vision of the commitment of the Resistance members"), and evaluate its structure and the meaning of its words: the song's lyrics are structured as six [[quatrain]]s; the first and second lines of each is formed with seven syllables, the third line with five syllables and the fourth with six.{{R|ac-lyon}}
In his analysis for the [[University of Freiburg]], Giacomo Bottà describes d'Astier's lyrics as "very straightforward", then continues:{{R|freiburg botta}}
<blockquote>A partisan recalls, in the first person, episodes of his life ... each verse narrates a different situation: life on the run, the loss of the family, that of comrades, the killing of an old man who hid partisans, up to the ending.</blockquote>
The first five verses (quatrains) depict scenes of Nazi occupied France, the expectation of French people to accept the occupation of their country, and the extraordinary reaction of the Resistance. The first line of the song, "{{lang|fr|L'ennemi était chez moi}}" (English: "The enemy was at my house"), where "my house" can be understood as a reference to France, sets the scene. The second line, "{{lang|fr|On m'a dit 'Résigne-toi'}}" (English: "I was told 'Resign yourself{{' "}}), references the common resignation of the French people in response to [[Philippe Pétain]]'s radio address, after the Fall of France, announcing his intention to ask for an armistice with Germany.{{R|ac-lyon}}
In the third and fourth lines, "{{lang|fr|Mais je n'ai pas pu / Et j'ai repris mon arme}}" (English: "But I could not / And I took my weapon"), d'Astier introduces the notion of resistance, with a risk of death, loss of family, friends and identity and leading a secretive and dangerous life on the run, evoked by the lines "{{lang|fr|J'ai changé cent fois de nom / J'ai perdu femme et enfants ... Hier encore, nous étions trois / Il ne reste plus que moi / Et je tourne en rond / Dans la prison des frontières}}" (English: "I changed name a hundred times / I lost wife and children ... Just yesterday, there were three of us / Now there is only me / And I'm going around in circles / Inside the prison of borders").{{R|ac-lyon}}
The dangers d'Astier describes are countered by the expressions "{{lang|fr|Mais j'ai tant d'amis / Et j'ai la France entière}}" (English: "But I have so many friends / And I have the whole of France"), describing the support of the Resistance from the French people. In the final verse, d'Astier expresses his hope and confidence that Resistance will not be futile; "{{lang|fr|Le vent souffle sur les tombes}}" (English: "The wind blows on the graves") evoking a cleansing wind and "{{lang|fr|La liberté reviendra / On nous oubliera / Nous rentrerons dans l'ombre}}" (English: "Freedom will return / We will be forgotten / We will go into the shadows") expressing the confidence that the actions of the mostly anonymous Resistance will have their desired effect.{{R|ac-lyon}}
Marly performed her song self-accompanied by guitar, and introduced each verse instrumentally while whistling the melody.{{R|freiburg botta}}
==Adaptation to English==
{{Further|Hy Zaret}}
Born in Manhattan, New York City in 1907, Hy Zaret was best known as a [[Tin Pan Alley]] lyricist, whose writing credits include those for "Unchained Melody", "[[One Meat Ball]]" and several educational and public service songs. He wrote an English version of "La Complainte du partisan"{{Refn
| group = g
| name = jones, martin group
| {{Plainlist|
* {{Nowrap|Jones, ''Open Culture''}} {{R|jones oc}}
* {{Nowrap|Martin, ''The New York Times''}} {{R|nytimes zaret obit}}
}}
}}{{Refn
| group=g
| name=jones, zaret nytimes obit, telegraph zaret obit, wise, hogan group
| {{Plainlist|
* {{Nowrap|Zaret obit. ''The Telegraph''}} {{R|telegraph zaret obit}}
* {{Nowrap|''The Little Black Songbook''}} {{R|wise cohen}}
* {{Nowrap|Hogan, ''Pitchfork''}} {{R|hogan cohen}}
}}
}} titled "Song of the French partisan", published by the [[Lou Levy (publisher)|Leeds Publishing Corporation]], New York City, August 11, 1944.{{R|CC}}{{R|ac-lyon}} Zaret's adaptation includes three of d'Astier's original French verses, with references to {{lang|fr|L'ennemi}} (English: "The enemy") changed to {{lang|fr|Les Allemands}} (English: "The Germans"), inserted between the penultimate and final English verses.{{R|ac-lyon}} Leonard Cohen used Zaret's adaptation for his creation of "[[#Leonard Cohen's cover version|The Partisan]]", the cover version that popularised the song globally.{{Refn
| group = g
| name = martin, jones and young group
| {{Plainlist|
* {{Nowrap|Jones, Martin}} {{Refn |group=g |name=jones, martin group}}
* {{Nowrap|Young, ''Consequence of Sound''}} {{R|young cos}}
}}
}}
Douglas Martin reported for ''[[The New York Times]]'' that Zaret "loosely translated" the French lyrics,{{R|martin nytimes}} and in his book ''Passion and Ambivalence: Colonialism, Nationalism, and International Law'', author [[Nathaniel Berman]] compares excerpts of d'Astier's original French lyrics alongside, what he calls Zaret's English <!-- the following zero-width-joiner glues the quote-mark to the parentheses -->"‍(mis)translation", and notes that "the two versions reflect very different views"; that Zaret's English suggests that the partisans will "come from the shadows", while the French "{{lang|fr|nous rentrerons dans l'ombre}}", he states as "we will <em>return</em> to the shadow" (emphasis in quote) in English, suggests that the partisans – the Resistance – are "an artifact of the imperialism that dominates [them]", and that "reconciliation of society with its shadows is an illusion".{{R|berman}}
Alex Young, for ''[[Consequence of Sound]]'', describes the differences between the original French and Zaret's English, saying it "downplays the song's historical content – the English lyrics contain no references to France or the Nazi occupation", with an example of literal English translations of the song's first line, "The Germans were at my house" (French: "{{lang|fr|Les Allemands étaient chez moi}}"), being unheard in his English lyrics. Young goes on to compare the literal English translation of the same verse compared by Berman:{{R|young cos}}
{{Listen
| type = music
| header = Comparison of Marly and Cohen performing, respectively, d'Astier's original French and Zaret's English final verse
| filename = Anna Marly - La Complainte du partisan - 1963.ogg<!-- has non-free fair-use rationale, not reviewed as of January 2023 -->
| title = Anna Marly; "La Complainte du partisan"; 1963
| filename2 = Leonard Cohen, The Partisan, 1968 - 28.5 second excerpt of English transition to French.ogg<!-- has non-free fair-use rationale, not reviewed as of January 2023 -->
| title2 = Leonard Cohen; "The Partisan"; 1969
}}
{|
! scope="col" | d'Astier's French<small style="display:block">(as compared by Berman)</small>
! scope="col" | Zaret's English<small style="display:block">(as compared by Berman)</small>
! scope="col" | Literal English translation<small style="display:block">(as compared by Young)</small>
|-
| <blockquote><poem>{{lang|fr|Le vent souffle sur les tombes
La Liberté reviendra
On nous oubliera
Nous rentrerons dans l'ombre}}</poem></blockquote>
| <blockquote><poem>Oh, the wind, the wind is blowing
Through the graves the wind is blowing
Freedom soon will come
Then we'll come from the shadows</poem></blockquote>
| <blockquote><poem>The wind is blowing on the graves
Freedom will come back
Everyone will forget us
We will return to the shadows</poem></blockquote>
|}{{Clear}}
Maurice Ratcliff also noted, in his book ''Leonard Cohen: The Music and The Mystique'', that there are differences between the original French and Zaret's English versions; he comments that Leonard Cohen's "The Partisan" is "substantially Zaret's", and while it does also contain verses sung in the original French, references to "The Germans" in the English verses, "become the more neutral 'soldiers{{' "}} and "the shelter-giving 'old woman' is '{{lang|fr|un vieux[‍[[sic]]] homme}}{{' "}} (English: "an old man").{{R|ratcliff cohen}}
Giacomo Bottà describes Zaret's adaptation as "relatively faithful",{{R|freiburg botta}} while in the Académie de Lyon's evaluation of "La Complainte du partisan", its adaptation and cover versions, they write:{{R|ac-lyon}}
<blockquote>{{lang|fr|La version de Léonard Cohen propose une traduction fidèle, sauf la dernière strophe, qui est bien plus positive: les résistants sortiront de l'ombre et la liberté sera revenue. Le résistant est montré davantage comme un héros, qui est placé dans la lumière, une fois la liberté revenue.}} (English: The version of Leonard Cohen offers a faithful translation, except the last stanza, which is much more positive: the resistants will come out of the shadows and freedom will return. The resistance fighter is shown more as a hero, who is placed in the light, once freedom has returned).</blockquote>
They state that:{{R|ac-lyon}}
<blockquote>{{lang|fr|Cohen était fasciné par cette chanson et se demandait d'ailleurs "si la musique et les écrits n'avaient pas, à eux seuls, renversé Hitler"}} (English: Cohen was fascinated by this song and wondered, moreover, "if music and writings alone did not overthrow Hitler").</blockquote>
==Leonard Cohen's cover version==
{{Infobox song
| name = The Partisan
| cover = Leonard Cohen - The Partisan (B-side - Bird on the Wire) - 1969 CBS (4262) 7-inch single cover art.jpg
| type = single
| artist = [[Leonard Cohen]]
| album = [[Songs from a Room]]
| B-side = [[Bird on the Wire]]
| released = {{Start date|1969|05|30}}
| recorded = {{Start date|1968|10}}
| studio = Columbia Studio A, Nashville
| genre = [[Folk music|Folk]]
| length = {{Duration|m=3|s=37}}
| label = [[CBS]]
| composer = [[Anna Marly]]
| lyricist =
* [[Emmanuel d'Astier de La Vigerie]]
* [[Hy Zaret]]
| producer = [[Bob Johnston]]
| prev_year = 1968
| prev_title = [[So Long, Marianne]]
| next_title = [[Joan of Arc (Leonard Cohen song)|Joan of Arc]]
| next_year = 1971
}}
While living at a rented farm in [[Franklin, Tennessee]], Leonard Cohen worked on his second album ''[[Songs from a Room]]'' with [[Bob Johnston]], its producer. In the candlelit [[Columbia Records|Columbia]] Studio A on [[Music Row]], Nashville,{{R|lynskey cohen}} Johnston created a relaxed atmosphere for, what Mike Evans, in his book ''Leonard Cohen: An Illustrated Record'', calls "suitable, and non-intrusive, backing" by the assembled session musicians: [[Charlie Daniels]] on bass, fiddle and guitar, [[Ron Cornelius]] on guitars, Bubba Fowler on banjo, bass, fiddle and guitar, and Johnston himself playing keyboards. Ten songs were recorded in one eight-hour session, half of which ended up on the album.{{R|ratcliff cohen}}{{Refn
| group = g
| name = young, evans group
| {{Plainlist|
* {{Nowrap|Young, ''Consequence of Sound''}} {{R|young cos}}
* {{Nowrap|Evans, ''Leonard Cohen: An Illustrated Record''}} {{R|evans cohen}}
}}}}
The recording of "The Partisan" utilized only a classical guitar, double bass, and accordion along with vocals by Cohen and female voices. Bottà states, of Cohen's recording of Zaret's adaptation, that "the melody and chord structure is considerably different from the original" by Marly.{{R|freiburg botta}}
Both writing for ''[[The Guardian]]'', [[Adam Sweeting]], in Cohen's obituary, and Dorian Lynskey, in his music blog article, refer to ''Songs from a Room'' as being bleak. Sweeting states that it is "another powerful but bleak collection",{{R|guardian cohen obit}} while Lynskey calls it "sparser and bleaker than the debut",{{R|lynskey cohen}} ''[[Songs of Leonard Cohen]]''.
Cohen first learned "La Complainte du partisan" from ''[[People's Songs|The People's Songbook]]'' as a fifteen-year-old boy at summer-camp in 1950.{{R|nadel cohen}} Using Zaret's predominantly English adaptation to record the song, with the title "The Partisan",{{R|hogan cohen}} left Cohen dissatisfied, and he suggested to Johnston that French voices were needed on the track. Johnston reportedly arranged to fly with Cohen to Paris, for "authenticity" according to Maurice Ratcliff, to record a trio of female singers and an accordion player, whose work was [[overdub]]bed on to the track.{{R|ratcliff cohen}}{{Refn |group=g |name=young, evans group}} The song fades into an intro, followed by nine verses and an outro that fades out; the first five verses are sung from Zaret's English, followed by verses six, seven and eight being sung in French, and the final verse nine being a repeat of the English verse five.{{R|wise cohen}}
In May 1969, [[CBS]] released the album track, "The Partisan", in Europe as a [[7-inch single]] with, in the initial format, "[[Bird on the Wire]]", and in a later format, "[[Suzanne (Leonard Cohen song)|Suzanne]]" on the [[A-side and B-side|B-side]].{{R |kubernik cohen |mb cohen single}}
"The Partisan" was to be Cohen's first commercial recording of a song he did not write;{{R|evans cohen}} writing about Cohen's cover versions of other's songs, in his article for ''[[Pitchfork (website)|Pitchfork]]'', published soon after Cohen's death, [[Marc Hogan]] refers to Cohen's "The Partisan" as a "wonderfully affecting ... haunting version",{{R|hogan cohen}} and Josh Jones, writing for ''Open Culture'', describes it as having a "folk melody and melancholy lyricism",{{R|jones oc}} with what Ratcliff calls a "plodding bass line underpinning the simply strummed guitar and an occasional accordion" and "a rare excursion ... into political territory".{{R|ratcliff cohen}} Tim Nelson, in his BBC review of Cohen's albums, also refers to the song's "biting political commentary".{{R|nelson review}}
===Cultural impact===
Alex Young writes that "[Cohen] is often incorrectly credited as the composer of the [original] song – although he is certainly responsible for its survival",{{R|young cos}} Douglas Martin states that {{" '}}The Partisan' gained popularity" in the United States thanks to Cohen's recording,{{R|martin nytimes}} and Josh Jones writes that the song "[has] become so closely associated with Cohen that it has often been credited to him", with Cohen reportedly remarking, "I kind of re-introduced ['The Partisan'] into the world of popular music. I feel I wrote it, but I actually didn't" (bracketed content in source).{{R|jones oc}} Hogan writes that Cohen's version "became one of his signature songs, leading to renditions by Joan Baez, Buffy Sainte-Marie, [[Electrelane]], [[First Aid Kit (band)|First Aid Kit]], and many others."{{R|hogan cohen}}
Evans writes about a Polish translation of Cohen's—Zaret's—song being adopted as an unofficial anthem of the [[Solidarity (Polish trade union)|Solidarity]] movement for democracy in the detention camps of [[History of Poland (1945–1989)|communist Poland]], one of the countries in which Cohen performed while on the [[Various Positions Tour]] in 1985, supporting his album that spawned "[[Hallelujah (Leonard Cohen song)|Hallelujah]]", ''[[Various Positions]]''.{{R|evans cohen}}
==Other cover versions==
Luke Reilly, reporting for an article in ''[[IGN]]'' about the creation of Australian composer [[Mick Gordon (composer)|Mick Gordon]]'s version of "The Partisan" for the closing credits of the 2015 [[video game]] ''[[Wolfenstein: The Old Blood]]'', a game in [[Wolfenstein|a series]] depicting the events of a fictionalised World War II, refers to Cohen's "The Partisan" as being "perhaps" the most famous, and reports that the audio director on Wolfenstein, Nicholas Raynor, also called Cohen's version "a famous one"; according to Gordon, it was Raynor's idea to do a cover for the game. The Australian singer-songwriter [[Tex Perkins]] was Gordon's first choice to sing his version. Reilly says "the song itself is poignant and heartrending, yet incredibly stirring and motivational. A song that simultaneously mourns what's been lost and steels listeners for a fight to come" and that Gordon and Perkin's version "begins with a softly haunting acoustic intro before escalating to stomping blasts of distorted guitar and heaving drumming".{{R|reilly gordon}}
Recording their 2005 album ''[[Axes (album)|Axes]]'' live in the studio, English group Electrelane included a version of "The Partisan" on the release. Andy Gill, reviewing the album for ''[[The Independent]]'', described their style as "a sort of cross between [[Krautrock]], [[klezmer]] and [[free jazz]] that thrives on the enthusiasm of performance", and that their version is "still recognisable ... despite the churning thrash they give it".{{R |hogan cohen |gill electrelane}}
Canadian group [[Po' Girl]] included a version on their 2007 album, ''[[Home to You (Po' Girl album)|Home to You]]'', which Sue Keogh described, in her review for the BBC, as an "acoustic mix of guitars, banjos and violin, plus a couple of moments of clarinet and trumpet or wry comments from [[performance poet]] CV Avery to keep you on your toes", having a "gentle acoustic sound" with a "bright and breezy yet intimate and charming atmosphere".<!-- BBC content by-nc-sa/3.0 licensed -->{{R|keogh po girl}} David Jeffries called the album a "layered, insightful, and achingly poignant triumph" in his review for [[AllMusic]].{{R|am po girl}}
Betty Clarke, for ''the Guardian'', reviewed a live show at the Village Underground, London by American group [[Other Lives (band)|Other Lives]] in 2012, where they performed a cover of "The Partisan". Clarke says the band create "indie-pop with the scope, precision and polish of [[Fleetwood Mac]]'s ''[[Rumours (album)|Rumours]]''" (emphasis added), and that their performance of "The Partisan" "encompass[ed] all the elements of Other Lives' sound".{{R|clarke other lives}}
Versions of "The Partisan" have been performed, recorded and released by many other artists, with none being so widely referenced as that by Joan Baez{{R |reilly gordon |hogan cohen}} in 1972,{{Refn
| group=g
| name=jones, martin, young, evans group
| {{Plainlist|
* {{Nowrap|Jones, Martin}} {{Refn |group=g |name=jones, martin group}}
* {{Nowrap|Young, Evans}} {{Refn |group=g |name=young, evans group}}
}}
}} on her album ''Come from the Shadows'',{{R|mb baez album}} the name of which is derived from Zaret's English lyrics.{{R|baez memoir}}
===Song of the French Partisan===
{{Infobox song
| name = Song of the French Partisan
| type = song
| artist = [[Buffy Sainte-Marie]]
| album = [[She Used to Wanna Be a Ballerina]]
| A-side = Soldat Bleu
| released = {{Start date|1970}}
| genre =
* [[Folk music|Folk]]
* [[pop rock]]
| length = {{Duration|m=3|s=16}}
| label = [[Vanguard Records|Vanguard]]
| composer = [[Anna Marly]]
| lyricist =
* {{Nowrap|[[Emmanuel d'Astier de La Vigerie]]}}
* [[Hy Zaret]]
| producer =
* [[Jack Nitzsche]]
* {{Nowrap|[[Buffy Sainte-Marie]]}}
}}
[[File:Buffy Sainte-Marie -performing at the Grand Gala du Disque 1968.png|thumb|upright=0.5|left|[[Buffy Sainte-Marie]] performing at the [[Edison Award|Grand Gala du Disque]] in 1968|alt=A young woman playing a classical guitar]]
In 1970, Canadian singer-songwriter Buffy Sainte-Marie provided the title song for the film ''[[Soldier Blue]]'',{{Refn
| group = g
| name = ruhlmann, positif, jeune group
| {{Plainlist|
* {{Nowrap|Ruhlmann, ''AllMusic'' review}} {{R|ruhlmann review}}
* {{Nowrap|''Positif'' magazine}} {{R|positif}}
* {{Nowrap|''Jeune Cinéma'' magazine}} {{R|jeune}}
}}
}} first released as a 7-inch single in France in 1970 by [[Vanguard Records]] with the title "Soldat Bleu", and elsewhere in 1971 by [[RCA Victor]] as "Soldier Blue", all releases featuring "Song of the French Partisan", the title as published by Zaret,{{R|bnf partisan}}{{R|CC}} a "folk tune she learned from Leonard Cohen" according to Andrea Warner in her book, ''Buffy Sainte-Marie: The Authorized Biography'',{{R|warner sainte-marie bio}} on the B-side.{{R|ocde soldier}} Both songs were included on her 1971 album ''[[She Used to Wanna Be a Ballerina]]''.{{R |ruhlmann review |warner sainte-marie bio}} The RCA release of "Soldier Blue" was a top-10 hit in the United Kingdom in 1971, spending eighteen weeks on the singles chart, four in the top-10, two at number seven.{{R |hogan cohen |ocuk soldier}}
Another version to be produced by Bob Johnston was recorded by Israeli singer Esther Ofarim, who had previously taken second place for Switzerland in the [[Eurovision Song Contest 1963|1963 Eurovision Song Contest]]{{R |ev ofarim |ev fiasco}} and had, with her then husband [[Abi Ofarim]], a British number one hit with the novelty song "[[Cinderella Rockefella]]" in 1968.{{R |am ofarim bio |charts orarim}} She released the cover on her [[eponymous]] 1972 album ''Esther Ofarim''; in his review for AllMusic, Richie Unterberger calls Ofarim's recording of the song one of the highlights, awarding the album three of a possible five stars.{{R|am ofarim review}}
{{Clear}}
==See also==
{{Portal|Music|France}}
* [[Protest song]] – a song that is associated with a movement for [[social change]]
* {{Section link|Psychological warfare#World War II}} – the use of radio to disseminate [[propaganda]] during World War II
* "[[We'll Meet Again]]" – a 1939 song made famous by singer [[Vera Lynn]] which resonated with soldiers and their families during World War II
* "[[A Change Is Gonna Come]]" – a 1964 song by American recording artist [[Sam Cooke]] which became an anthem for [[African Americans]] and the [[Civil Rights Movement]]
* ''[[The Sorrow and the Pity]]'' – a two-part 1969 documentary film by [[Marcel Ophüls]] about the collaboration between the [[Vichy France|Vichy]] government and Nazi Germany during World War II – featuring interviews with and archival footage of Emmanuel d'Astier de La Vigerie
==References==
'''Groups'''
{{Reflist|group=g|30em}}
'''Sources'''
{{Reflist|refs=
<!-- Books -->
<ref name="ratcliff cohen">{{Cite book
| medium = Book
| title = Leonard Cohen: The Music and The Mystique
| first = Maurice
| last = Ratcliff
| chapter = Part 1: Studio albums
| publisher = [[Omnibus Press]]
| year = 2012
| isbn = 9780857128225
| chapter-url = https://books.google.com/books?id=ujgDAwAAQBAJ&q=%22the+partisan%22
| via = [[Google Books]]
}}</ref>
<ref name="craig book">{{Cite book
| medium = Book
| title = Sovereignty, War, and the Global State
| first = Dylan
| last = Craig
| page = 110
| publisher = [[Springer Publishing]]
| year = 2019
| isbn = 9783030198862
| url = https://books.google.com/books?id=QXCfDwAAQBAJ&q=%22La+Complainte+du+partisan%22
| via = [[Google Books]]
}}</ref>
<ref name="wise cohen">{{Cite book
| medium = Book
| title = The Little Black Songbook: Leonard Cohen
| author = Wise Publications
| chapter = The Partisan
| pages = 124–125
| year = 2012
| publisher = Wise Publications
| isbn = 9780857129192
| chapter-url = https://books.google.com/books?id=OGvHDgAAQBAJ&q=%22the+partisan%22
| via = [[Google Books]]
}}</ref>
<ref name="berman">{{Cite book
| medium = Book
| title = Passion and Ambivalence: Colonialism, Nationalism, and International Law
| first = Nathaniel
| last = Berman
| author-link = Nathaniel Berman
| translator-first1 = Euan
| translator-last1 = MacDonald
| pages = 455–456
| publisher = [[Martinus Nijhoff Publishers]]
| year = 2011
| isbn = 9789004210240
| url = https://books.google.com/books?id=1oga8OOqW40C&q=%22La+Complainte+du+partisan%22
| via = [[Google Books]]
}}</ref>
<ref name="evans cohen">{{Cite book
| medium = Book
| title = Leonard Cohen: An Illustrated Record
| first = Mike
| last = Evans
| year = 2018
| publisher = [[Plexus Publishing]]
| isbn = 9780859658690
| url = https://books.google.com/books?id=lA5tDwAAQBAJ&q=%22the+partisan%22
| via = [[Google Books]]
}}</ref>
<ref name="kubernik cohen">{{Cite book
| medium = Book
| title = Leonard Cohen: Everybody Knows
| first = Harvey
| last = Kubernik
| author-link = Harvey Kubernik
| chapter = 7" and 12" Vinyl Singles, EPs and CD-Singles
| year = 2017
| publisher = [[Omnibus Press]]
| isbn = 9781783238163
| chapter-url = https://books.google.com/books?id=0AYxCwAAQBAJ&q=%22the+partisan%22+4262
| via = [[Google Books]]
}}</ref>
<ref name="baez memoir">{{Cite book
| medium = Book
| title = And A Voice to Sing With: A Memoir
| first = Joan
| last = Baez
| author-link = Joan Baez
| pages = 169–170
| publisher = [[Simon and Schuster]]
| year = 2012
| isbn = 9781451688405
| url = https://books.google.com/books?id=4Lw5Y0nsWd0C&q=partisan
| via = [[Google Books]]
}}</ref>
<ref name="warner sainte-marie bio">{{Cite book
| medium = Book
| title = Buffy Sainte-Marie: The Authorized Biography
| first = Andrea
| last = Warner
| chapter = Better to find out for yourself
| publisher = [[Greystone Books]]
| year = 2018
| isbn = 9781771643597
| chapter-url = https://books.google.com/books?id=m2JmDwAAQBAJ&q=%22The+song+of+the+French+partisan%22
| via = [[Google Books]]
}}</ref>
<ref name="nadel cohen">{{Cite book
| medium = Book
| title = Various Positions: A Life of Leonard Cohen
| first = Ira B.
| last = Nadel
| author-link = Ira Nadel
| publisher = [[Random House of Canada]]
| year = 2010
| isbn = 9780307367020
| url = https://books.google.com/books?id=p44Jtck3VCAC&q=%22the+people%27s+songbook%22
| via = [[Google Books]]
}}</ref>
<ref name="CC">{{Cite book
| medium = Book
| title = Catalog of Copyright Entries: Musical compositions, Part 3
| publisher = [[Library of Congress]], Copyright Office
| year = 1944
| page = 1421
| url = https://books.google.com/books?id=yj5jAAAAIAAJ&q=%22song+of+the+french+partisan%22
| via = [[Google Books]]
}}</ref>
<!-- Journals -->
<ref name="king dAstier">{{Cite journal
| medium = Journal
| journal = Journal of Contemporary History
| volume = 8
| issue = 4
| year = 1973
| publisher = [[SAGE Publications]]
| title = Emmanuel d'Astier and the Nature of the French Resistance
| pages = 25–34
| first = Jonathan H.
| last = King
| jstor = 260126
| doi = 10.1177/002200947300800402
| s2cid = 159925576
}}</ref>
<!-- Magazines -->
<ref name="positif">{{Cite magazine
| medium = Magazine
| magazine = [[Positif (magazine)|Positif]]
| title = Positif, Issues 123-133
| year = 1971
| publisher = Nouvelles éditions
| language = fr
| url = https://books.google.com/books?id=JTtAAQAAIAAJ&q=%22Buffy+Sainte-Marie%22+%22Soldat+Bleu%22
| via = [[Google Books]]
}}</ref>
<ref name="jeune">{{Cite magazine
| medium = Magazine
| magazine = [[:fr:Jeune Cinéma|Jeune Cinéma]]
| title = Jeune cinéma, Issues 53-62
| year = 1971
| publisher = Fédération Jean Vigo
| language = fr
| url = https://books.google.com/books?id=p2Q9AAAAIAAJ&q=%22Buffy+Sainte-Marie%22
| via = [[Google Books]]
}}</ref>
<!-- News -->
<ref name="guardian cohen obit">{{Cite news
| url = https://www.theguardian.com/music/2016/nov/11/leonard-cohen-obituary
| url-status = live
| archive-url = https://web.archive.org/web/20200829145429/https://www.theguardian.com/music/2016/nov/11/leonard-cohen-obituary
| archive-date = August 29, 2020
| access-date = October 23, 2020
| website = [[The Guardian]]
| department = Obituaries
| title = Leonard Cohen obituary
| first = Adam
| last = Sweeting
| author-link = Adam Sweeting
| date = November 11, 2016
}}</ref>
<ref name="martin nytimes">{{Cite news
| url = https://www.nytimes.com/2006/03/13/world/europe/anna-marly-88-dies-inspired-french-resistance-in-song.html
| url-status = live
| archive-url = https://web.archive.org/web/20170918001416/https://www.nytimes.com/2006/03/13/world/europe/anna-marly-88-dies-inspired-french-resistance-in-song.html
| archive-date = September 18, 2017
| access-date = August 13, 2019
| url-access = subscription
| website = [[The New York Times]]
| title = Anna Marly, 88, Dies; Inspired French Resistance in Song
| first = Douglas
| last = Martin
| date = March 13, 2016
}}</ref>
<ref name="nytimes zaret obit">{{Cite news
| url = https://www.nytimes.com/2007/07/03/arts/03zaret.html
| url-status = live
| archive-url = https://web.archive.org/web/20200810002754/https://www.nytimes.com/2007/07/03/arts/03zaret.html
| archive-date = August 10, 2020
| access-date = October 23, 2020
| website = [[The New York Times]]
| department = Arts
| title = Hy Zaret, 99, Tin Pan Alley Lyricist, Is Dead
| first = Douglas
| last = Martin
| date = July 3, 2007
}}</ref>
<ref name="telegraph zaret obit">{{Cite news
| url = https://www.telegraph.co.uk/news/obituaries/1556693/Hy-Zaret.html
| url-status = live
| archive-url = https://web.archive.org/web/20190813032922/https://www.telegraph.co.uk/news/obituaries/1556693/Hy-Zaret.html
| archive-date = August 13, 2019
| access-date = October 23, 2020
| website = [[Telegraph.co.uk|The Telegraph]]
| department = Obituaries
| title = Hy Zaret
| date = July 7, 2007
}}</ref>
<ref name="kirkup marly obit">{{Cite news
| url = https://www.independent.co.uk/news/obituaries/anna-marly-6108581.html
| url-status = live
| archive-url = https://web.archive.org/web/20190813042807/https://www.independent.co.uk/news/obituaries/anna-marly-6108581.html
| archive-date = August 13, 2019
| access-date = October 23, 2020
| website = [[The Independent]]
| department = Obituaries
| title = Anna Marly: 'Troubadour of the Resistance'
| first = James
| last = Kirkup
| author-link = James Kirkup
| date = February 21, 2006
}}</ref>
<ref name="telegraph marly obit">{{Cite news
| url = https://www.telegraph.co.uk/news/obituaries/1511643/Anna-Marly.html
| url-status = live
| archive-url = https://web.archive.org/web/20190816103007/https://www.telegraph.co.uk/news/obituaries/1511643/Anna-Marly.html
| archive-date = August 16, 2019
| access-date = October 24, 2020
| website = [[Telegraph.co.uk|The Telegraph]]
| department = Obituaries
| title = Anna Marly
| date = February 28, 2006
}}</ref>
<!-- Web -->
<ref name="bnf partisan">{{Cite web
| url = https://catalogue.bnf.fr/ark:/12148/cb431354120
| website = BnF
| title = Notice bibliographique La Complainte du partisan--Song of the French partisan. Paroles de Bernard
| trans-title = Bibliographic Record The lament of the partisan - Song of the French partisan. Bernard's words
| publisher = [[Bibliothèque nationale de France]]
| language = fr
| access-date = August 29, 2019
}}</ref>
<ref name="bnf dAstier">{{Cite web
| url = https://data.bnf.fr/fr/11889316/emmanuel_d__astier_de_la_vigerie/
| website = BnF
| title = Emmanuel of Astier de La Vigerie (1900-1969)
| publisher = [[Bibliothèque nationale de France]]
| language = fr
| access-date = September 6, 2019
}}</ref>
<ref name="order of liberation">{{Cite web
| url = https://www.ordredelaliberation.fr/fr/compagnons/emmanuel-astier-de-la-vigerie-d
| url-status = live
| archive-url = https://web.archive.org/web/20200809205819/https://www.ordredelaliberation.fr/fr/compagnons/emmanuel-astier-de-la-vigerie-d
| archive-date = August 9, 2020
| access-date = October 23, 2020
| website = Musée de l'Ordre de la Libération
| title = Emmanuel d'Astier of the Vigerie
| language = fr
}}</ref>
<ref name="fondation resistance">{{Cite web
| url = http://www.fondationresistance.org/pages/rech_doc/emmanuel-astier-vigerie_portrait9.htm
| url-status = live
| archive-url = https://web.archive.org/web/20200809021836/http://www.fondationresistance.org/pages/rech_doc/emmanuel-astier-vigerie_portrait9.htm
| archive-date = August 9, 2020
| access-date = October 23, 2020
| website = fondation de la résistance
| title = Profiles: Emmanuel d'Astier of the Vigerie
| language = fr
}}</ref>
<ref name="ac-lyon">{{Cite web
| url = http://www2.ac-lyon.fr/ressources/rhone/arts-culture/IMG/pdf/la_complainte_du_partisan.pdf
| url-status = dead
| archive-url = https://web.archive.org/web/20190812011816/http://www2.ac-lyon.fr/ressources/rhone/arts-culture/IMG/pdf/la_complainte_du_partisan.pdf
| archive-date = August 12, 2019
| access-date = October 23, 2020
| website = Académie de Lyon
| title = La Complainte du partisan
| publisher = [[:fr:Académie de Lyon (éducation)|Academy of Lyon]]
| language = fr
}}</ref>
<ref name="freiburg botta">{{Cite web
| url = https://portal.uni-freiburg.de/songlexikon/songs/thepartisan
| url-status = dead
| archive-url = https://web.archive.org/web/20160428051633/https://portal.uni-freiburg.de/songlexikon/songs/thepartisan
| archive-date = April 28, 2016
| website = Albert-Ludwigs-Universität Freiburg
| title = La complainte du partisan / The Partisan — Songlexikon
| first = Giacomo
| last = Bottà
| publisher = [[University of Freiburg]]
| date = July 24, 2014
| access-date = August 4, 2020
}}</ref>
<ref name="jones oc">{{Cite web
| url = http://www.openculture.com/2018/09/tom-waits-releases-timely-cover-italian-anti-fascist-anthem-bella-ciao-first-new-song-two-years.html
| url-status = live
| archive-url = https://web.archive.org/web/20200725163543/http://www.openculture.com/2018/09/tom-waits-releases-timely-cover-italian-anti-fascist-anthem-bella-ciao-first-new-song-two-years.html
| archive-date = July 25, 2020
| access-date = October 23, 2020
| website = Open Culture
| title = Tom Waits Releases a Timely Cover of the Italian Anti-Fascist Anthem "Bella Ciao," His First New Song in Two Years
| first = Josh
| last = Jones
| date = September 14, 2018
}}</ref>
<ref name="reilly gordon">{{Cite web
| url = https://uk.ign.com/articles/2016/12/12/pentagrams-and-partisans-mick-gordon-on-making-music-that-matters
| url-status = live
| archive-url = https://web.archive.org/web/20190812000811/https://www.ign.com/articles/2016/12/12/pentagrams-and-partisans-mick-gordon-on-making-music-that-matters
| archive-date = August 12, 2019
| access-date = October 23, 2020
| website = [[IGN]]
| title = Pentagrams and Partisans: Mick Gordon on Making Music That Matters
| first = Luke
| last = Reilly
| publisher = [[Ziff Davis]]
| date = October 19, 2017
}}</ref>
<ref name="young cos">{{Cite web
| url = https://consequence.net/2009/01/rock-history-101-leonard-cohen-the-partisan/
| url-status = live
| archive-url = https://web.archive.org/web/20190812192301/https://consequenceofsound.net/2009/01/rock-history-101-leonard-cohen-the-partisan/
| archive-date = August 12, 2019
| access-date = October 23, 2020
| website = [[Consequence of Sound]]
| title = Rock History 101: Leonard Cohen – "The Partisan"
| first = Alex
| last = Young
| date = January 14, 2009
}}</ref>
<ref name="lynskey cohen">{{Cite web
| url = https://www.theguardian.com/music/musicblog/2016/nov/11/leonard-cohen-he-knew-things-about-life-and-if-you-listened-you-could-learn
| url-status = live
| archive-url = https://web.archive.org/web/20201008040823/https://www.theguardian.com/music/musicblog/2016/nov/11/leonard-cohen-he-knew-things-about-life-and-if-you-listened-you-could-learn
| archive-date = October 8, 2020
| access-date = October 23, 2020
| website = [[The Guardian]]
| department = Music blog
| title = Leonard Cohen – he knew things about life, and if you listened you could learn
| first = Dorian
| last = Lynskey
| date = November 11, 2016
}}</ref>
<ref name="hogan cohen">{{Cite web
| url = https://pitchfork.com/thepitch/1361-7-covers-leonard-cohen-made-his-own/
| url-status = live
| archive-url = https://web.archive.org/web/20201001110857/https://pitchfork.com/thepitch/1361-7-covers-leonard-cohen-made-his-own/
| archive-date = October 1, 2020
| access-date = October 23, 2020
| website = [[Pitchfork (website)|Pitchfork]]
| department = The Pitch
| title = 7 Covers Leonard Cohen Made His Own
| first = Marc
| last = Hogan
| author-link = Marc Hogan
| date = November 11, 2016
}}</ref>
<ref name="nelson review">{{Cite web
| url = https://www.bbc.co.uk/music/reviews/3f54/
| url-status = live
| archive-url = https://web.archive.org/web/20190814202334/https://www.bbc.co.uk/music/reviews/3f54/
| archive-date = August 14, 2019
| access-date = October 23, 2020
| website = [[BBC]]
| title = Leonard Cohen The Songs of Leonard Cohen, Songs from a Room, Songs of Love and Hate Review
| first = Tim
| last = Nelson
| year = 2007
}}</ref>
<ref name="gill electrelane">{{Cite web
| url = https://www.independent.co.uk/arts-entertainment/music/reviews/album-electrelane-236888.html
| url-status = live
| archive-url = https://web.archive.org/web/20190812200751/https://www.independent.co.uk/arts-entertainment/music/reviews/album-electrelane-236888.html
| archive-date = August 12, 2019
| access-date = October 23, 2020
| website = [[The Independent]]
| title = Album: Electrelane
| first = Andy
| last = Gill
| date = May 6, 2005
}}</ref>
<ref name="clarke other lives">{{Cite web
| url = https://www.theguardian.com/music/2012/apr/05/other-lives-review
| url-status = live
| archive-url = https://web.archive.org/web/20190811224318/https://www.theguardian.com/music/2012/apr/05/other-lives-review
| archive-date = August 11, 2019
| access-date = October 23, 2020
| website = [[The Guardian]]
| title = Other Lives – review
| first = Betty
| last = Clarke
| date = April 5, 2012
}}</ref>
<ref name="keogh po girl">{{Cite web
| url = https://www.bbc.co.uk/music/reviews/nv63/
| url-status = live
| archive-url = https://web.archive.org/web/20190816205228/https://www.bbc.co.uk/music/reviews/nv63/
| archive-date = August 16, 2019
| access-date = October 23, 2020
| website = [[BBC]]
| title = Po' Girl Home To You Review
| first = Sue
| last = Keogh
| year = 2007
}}</ref>
<ref name="ocde soldier">{{Cite web
| url = https://www.offiziellecharts.de/titel-details-68247
| url-status = live
| archive-url = https://web.archive.org/web/20190818041250/https://www.offiziellecharts.de/titel-details-68247
| archive-date = August 18, 2019
| access-date = October 24, 2020
| website = [[Offizielle Deutsche Charts]]
| title = Offizielle Deutsche Charts: Soldier Blue
| trans-title = Official German Charts: Soldier Blue
| language = de
| publisher = [[GfK Entertainment charts|GfK Entertainment]]
}}</ref>
<ref name="ocuk soldier">{{Cite web
| url = https://www.officialcharts.com/search/singles/soldier-blue/
| url-status = live
| archive-url = https://web.archive.org/web/20190524195519/https://www.officialcharts.com/search/singles/soldier-blue/
| archive-date = May 24, 2019
| access-date = October 24, 2020
| website = [[Official Charts]]
| title = Official UK Singles Chart: Soldier Blue
}}</ref>
<ref name="ev ofarim">{{Cite web
| url = https://eurovision.tv/event/london-1963/participants
| url-status = live
| archive-url = https://web.archive.org/web/20200918133502/https://eurovision.tv/event/london-1963/participants
| archive-date = September 18, 2020
| access-date = October 24, 2020
| website = [[Eurovision Song Contest]]
| title = London 1963
}}</ref>
<ref name="ev fiasco">{{Cite web
| url = https://eurovision.tv/story/recalling-the-50th-anniversary-of-the-1963-contest
| url-status = live
| archive-url = https://web.archive.org/web/20200521131604/https://eurovision.tv/story/recalling-the-50th-anniversary-of-the-1963-contest
| archive-date = May 21, 2020
| access-date = October 24, 2020
| website = [[Eurovision Song Contest]]
| title = Recalling the 50th anniversary of the 1963 contest
| date = March 23, 2013
}}</ref>
<ref name="charts orarim">{{Cite web
| url = https://www.officialcharts.com/search/singles/cinderella-rockefella/
| url-status = live
| archive-url = https://web.archive.org/web/20201002002421/https://www.officialcharts.com/search/singles/cinderella-rockefella/
| archive-date = October 2, 2020
| access-date = October 24, 2020
| website = [[Official Charts]]
| title = Official singles chart results matching: Cinderella Rockefella
}}</ref>
<!-- Web / AllMusic -->
<ref name="am po girl">{{AllMusic
| id = mw0000558383
| title = AllMusic review by David Jeffries of Home to You by Po' Girl
| class = album
| first = David
| last = Jeffries
| accessdate = August 15, 2019
}}</ref>
<ref name="ruhlmann review">{{AllMusic
| id = mw0000096876
| title = AllMusic review by William Ruhlmann of She Used to Wanna Be a Ballerina by Buffy Sainte-Marie
| class = album
| first = William
| last = Ruhlmann
| accessdate = August 15, 2019
}}</ref>
<ref name="am ofarim review">{{AllMusic
| id = mw0001111689
| title = AllMusic review by Richie Unterberger of Esther Ofarim's eponymous album
| class = album
| first = Richie
| last = Unterberger
| accessdate = August 15, 2019
}}</ref>
<ref name="am ofarim bio">{{AllMusic
| id = mn0000528440
| title = Esther Ofarim: Biography
| class = artist
| first = Richie
| last = Unterberger
| accessdate = August 16, 2019
}}</ref>
<!-- MusicBrainz - These should ideally be replaced -->
<ref name="mb baez album">{{MusicBrainz release
| mbid = 9548ddda-d807-46da-99ba-b4ab91c2a3eb
| name = Come From The Shadows by Joan Baez
}}</ref>
<ref name="mb cohen single">{{MusicBrainz release group
| mbid = c69e0ac2-2de4-4f0e-8d69-8c23163fe3c0
| name = The Partisan by Leonard Cohen
}}</ref>
<!-- Not used inline yet -->
}}
{{refbegin}}
* {{Cite web
| url = https://www.musee-armee.fr/collections/explorer-les-collections/portofolios/les-femmes-a-travers-les-collections-du-musee-de-larmee.html
| title = Les femmes à travers les collections du musée de l'Armée
| trans-title = Women through the collections of the Musée de l'Armée
| publisher = [[Musée de l'armée]]
| language = fr
| archive-url = https://web.archive.org/web/20200812152945/https://www.musee-armee.fr/collections/explorer-les-collections/portofolios/les-femmes-a-travers-les-collections-du-musee-de-larmee.html
| archive-date = August 12, 2020
| url-status = live
| access-date = April 27, 2023
}}
* {{Cite book
| medium = Book
| title = Buffy Sainte-Marie: The Authorized Biography
| first = Andrea
| last = Warner
| chapter = Suffer the Little Children
| chapter-url = https://books.google.com/books?id=m2JmDwAAQBAJ&q=born
| publisher = [[Greystone Books]]
| year = 2018
| isbn = 9781771643597
| quote = There's no official record of Buffy Sainte-Marie's birth ... she was born ... most likely in 1941, on or around February 20th
| via = [[Google Books]]
}}
* {{Cite web
| url = https://www.npr.org/2018/09/29/652791230/buffy-sainte-maries-authorized-biography-serves-as-a-map-of-hope?t=1565934257569
| url-status = live
| archive-url = https://web.archive.org/web/20190816072041/https://www.npr.org/2018/09/29/652791230/buffy-sainte-maries-authorized-biography-serves-as-a-map-of-hope?t=1565934257569
| archive-date = August 16, 2019
| access-date = October 24, 2020
| title = Buffy Sainte-Marie's Authorized Biography Serves As A 'Map Of Hope'
| website = [[NPR]]
| date = September 29, 2018
| first = Scott
| last = Simon
| author-link = Scott Simon
| quote = [Buffy Sainte-Marie] doesn't know her exact birthday
}}
* {{Cite web
| url = http://joanbaez.com/bio/
| url-status = live
| archive-url = https://web.archive.org/web/20200224002154/http://joanbaez.com/bio/
| archive-date = February 24, 2020
| access-date = October 24, 2020
| website = Joan Baez
| title = Bio info: Chronology
| publisher = [[Joan Baez|Joan C. Baez]] / Diamonds & Rust Productions
| quote = 1941 Joan Chandos Baez is born on January 9
}}
* {{Cite news
| url = https://www.thetimes.com/article/anna-marly-03fp5jl0rwf
| url-status = live
| archive-url = https://web.archive.org/web/20190815131642/https://www.thetimes.co.uk/article/anna-marly-03fp5jl0rwf
| archive-date = August 15, 2019
| access-date = October 24, 2020
| url-access = subscription
| website = [[The Times]]
| title = Anna Marly
| date = February 24, 2006
}}
* {{Cite web
| url = https://www.leonardcohen.com/music/songs-from-a-room
| url-status = live
| archive-url = https://web.archive.org/web/20200919194537/https://www.leonardcohen.com/music/songs-from-a-room
| archive-date = September 19, 2020
| access-date = October 24, 2020
| website = The Official Leonard Cohen Site
| title = Songs from a Room
}}
{{refend}}
==External links==
<!--
Do not add video or other links to potentially copyright infringing media; see [[WP:COPYLINK]]
-->
* {{URL |1=leonardcohen.com |2=The Official Leonard Cohen Site}}<!-- operated by Sony Music Entertainment Canada Inc. -->
* {{URL |1=secondhandsongs.com/work/3798 |2="La complainte du partisan" at SecondHandSongs}} – a source of cover song information
* {{YouTube |hs5hOhI4pEE |Leonard Cohen - The Partisan (Audio)}} – uploaded by LeonardCohenVEVO
* {{YouTube |bZKnxtaVI2g |Les Stentors - La complainte du partisan}} – uploaded by LesstentorsVEVO
* {{YouTube |GEHpYn3sGwk |Emily Loizeau - La complainte du partisan}} – uploaded by EmilyLoizeauVEVO
* {{YouTube |TG_ZEovDDKk |Mick Gordon (feat. Tex Perkins) - The Partisan}} – uploaded by Mick Gordon
* {{YouTube |z9nafv7e1-E |Other Lives - The Partisan (Leonard Cohen cover) <nowiki>[Live at Amoeba]</nowiki>}} – uploaded by [[Amoeba Music]]
* {{YouTube |_KcKOeEwAaQ |The Partisan}} – Joan Baez – ''Come from the Shadows'' album version – provided to YouTube by [[Universal Music Group]]
* {{YouTube |VefiQvgCT8E |The Partisan}} – Electrelane – ''Axes'' album version – provided to YouTube by [[Beggars Group]]
{{Authority control}}
{{Leonard Cohen}}
{{Joan Baez}}
{{DEFAULTSORT:Partisan, The}}
[[Category:1943 songs]]
[[Category:Songs of World War II]]
[[Category:Songs about soldiers]]
[[Category:Songs about the military]]
[[Category:Songs in French]]
[[Category:French folk songs]]
[[Category:French Resistance]]
[[Category:Songs written by Anna Marly]]
[[Category:Songs written by Hy Zaret]]
[[Category:Buffy Sainte-Marie songs]]
[[Category:Leonard Cohen songs]]
[[Category:Joan Baez songs]]
[[Category:Song recordings produced by Bob Johnston]]
[[Category:Anti-fascist music]]
[[Category:CBS Records singles]]
g1tgtyn6watx8wnrri64qexaza5hw72
360857
360856
2026-05-18T04:58:21Z
ChiK
1136
೧ revisions imported from [[:en:The_Partisan]]
360856
wikitext
text/x-wiki
{{Short description|1943 song by Anna Marly and Emmanuel d'Astier, popularised by Leonard Cohen in 1969}}
{{Other uses|Partisan (disambiguation)}}
{{Infobox song
| name = La Complainte du partisan
| type = song
| artist = [[Anna Marly]]
| language = French
| English_title = The lament of the partisan
| published = {{Start date|1945}}
| released = {{Start date|1943}}
| genre =
* [[Folk music|Folk]]
* [[chanson]]<!-- This literally means "song" in French -->
| length = {{Duration|m=3|s=38}}
| composer = [[Anna Marly]]
| lyricist = {{Nowrap|[[Emmanuel d'Astier de La Vigerie]]}} {{a.k.a.}} Bernard
}}
"'''The Partisan'''" is an [[anti-fascist]] anthem about the [[French Resistance]] in World War II. The song was composed in 1943 by Russian-born [[Anna Marly]] (1917–2006), with lyrics by French Resistance leader [[Emmanuel d'Astier de La Vigerie]] (1900–1969), and originally titled "'''La Complainte du partisan'''" (English: "The [[lament]] of the partisan"). Marly performed it and other songs on the [[BBC]]'s French service, through which she and her songs were an inspiration to the Resistance. A number of French artists have recorded and released versions of the song since, but it is better recognised globally in its significantly, both musically and in the meaning of its lyrics, different English adaptation by [[Hy Zaret]] (1907–2007), best known as the lyricist of "[[Unchained Melody]]".
Canadian singer-songwriter [[Leonard Cohen]] (1934–2016) recorded his version, using Zaret's adaptation, and released it on his 1969 album ''[[Songs from a Room]]'', and as a 7-inch single in Europe. Cohen's version re-popularised the song and is responsible for the common misconception that the song was written by Cohen. It has inspired many other artists to perform, record and release versions of the song, including American [[Joan Baez]] (born 1941), on her 1972 album ''[[Come from the Shadows]]'', and with the title "'''Song of the French Partisan'''", Canadian [[Buffy Sainte-Marie]] (born {{circa|1941}}) and Israeli [[Esther Ofarim]] (born 1941).
==La Complainte du partisan==
[[File:Anna Marly, laissez-passer.png|thumb|upright=1|The [[Free French Forces]] pass of Anna Marly 1942]]
[[File:Liberation of Marseille, August 1944.jpg|thumb|upright=1|{{Coord|43.2942765|N|5.3743739|E|name=Approximate position of Emmanuel d'Astier in 1944 photograph}}; [[Emmanuel d'Astier de La Vigerie]] (far right) with [[:fr:André Diethelm|André Diethelm]] reviewing troops on the wharf of Rive-Neuve in liberated [[Marseille]] in 1944|alt=A group of men in suits and military uniforms, marching past, while admiring, a group of saluting soldiers]]
{{Further|Anna Marly|Emmanuel d'Astier de La Vigerie}}
Anna Marly was born in [[Saint Petersburg|Petrograd]] on October 30, 1917, and after her father was murdered by the [[Bolsheviks]], she escaped with her mother and sister to a Russian colony in [[Menton]], south-eastern France. Her artistic talents were encouraged from an early age; she was taught guitar by [[Sergei Prokofiev]], and by age sixteen, was dancing in the [[Ballets Russes]] in Paris. Becoming refugees upon the outbreak of World War II, her Dutch aristocrat husband and she travelled to London, arriving in 1941.{{Refn
| group = g
| name = martin, kirkup group
| {{Plainlist|
* {{Nowrap|Martin, ''The New York Times''}} {{R|martin nytimes}}
* {{Nowrap|Kirkup, ''The Independent''}} {{R|kirkup marly obit}}
}}
}}{{R|telegraph marly obit}}
Emmanuel d'Astier de La Vigerie was born in Paris on January 6, 1900, and after studying at the private high school [[Lycée privé Sainte-Geneviève|Sainte-Geneviève]] in [[Versailles (city)|Versailles]], he joined the [[École Navale]] (the French naval academy, in charge of the education of the officers of the French Navy) in 1919. Resigning the navy in 1931, d'Astier began a career in journalism, writing for ''Marianne'' and ''[[Vu (magazine)|VU]]''. With the outbreak of World War II in 1939, he was mobilised to work at the <em>centre de renseignements maritimes de Lorient</em> (English: <em>maritime information center of [[Lorient]]</em>) in north-western France, until the [[Fall of France]] in 1940. Refusing the [[Armistice of 22 June 1940|armistice with Germany]], he co-founded the Resistance movement <em>[[:fr:Libération-Sud|La Dernière Colonne]]</em> (English: <em>the Last Column</em>), publishing counter-propaganda against cooperation with Germany, and worked as an editor of the newspaper ''[[La Montagne (newspaper)|La Montagne]]''. After <em>the Last Column</em> was decimated by arrests in 1941, he went into hiding under the pseudonym ''Bernard''. By 1943, after meetings in London with [[Charles de Gaulle]], and in Washington with the United States' [[Franklin D. Roosevelt|President Roosevelt]], to secure the formation and recognition of the [[Free French Forces]], he again visited London as the Commissioner for Political Affairs of [[Mouvements Unis de la Résistance|le Directoire des Mouvements unis de Résistance]] (English: the Directory of United Resistance Movements).{{Refn
| group = g
| name = dAstier group
| {{Plainlist|
* {{Nowrap|Musée de l'Ordre de la Libération}} {{R|order of liberation}}
* {{Nowrap|fondation de la résistance}} {{R|fondation resistance}}
* {{Nowrap|Bibliothèque nationale de France (BnF)}} {{R|bnf dAstier}}
* {{Nowrap|King, ''Journal of Contemporary History''}} {{R|king dAstier}}
}}
}}
Jonathan H. King wrote, of d'Astier, in his article "Emmanuel d'Astier and the Nature of the French Resistance" for the ''Journal of Contemporary History'':{{R|king dAstier}}
<blockquote>Few men were at the centre of the Resistance, for the reason that its centre could rarely be defined and was rarely stable. Even fewer would have the necessary literary and verbal self-consciousness to achieve the goals [of subjectively documenting historical reality]. One who was at the centre and who did have this self-consciousness was Emmanuel d'Astier.</blockquote> and that, in his efforts to organise the Resistance, <blockquote>in his own words, d'Astier was seeking the strength of "popular forces, those forces which alone can change our dreams into reality, adventure into history, aesthetics into politics".</blockquote>
It was in London, in 1943, while Marly ran a [[hostel]] for French exiles,{{R|ratcliff cohen}} that she wrote the anti-fascist anthem{{R|craig book}} "La Complainte du partisan", with lyrics by d'Astier,{{R|jones oc}} going on to perform it and her other songs on [[Radio Londres]] (English: Radio London), the French Resistance radio operated by the Free French Forces, through the British Broadcasting Corporation.{{Refn |group=g |name=martin, kirkup group}}{{R|reilly gordon}} It was at this time that she also wrote "The March of the Partisans", with English lyrics by the Russian ambassador's daughter, Louba Krassine. The French exiles, [[Joseph Kessel]] and [[Maurice Druon]], also resident in London, translated it into French for play on Radio Londres and it became "[[Le Chant des Partisans]]" (English: "Song of the Partisans"), an unofficial French anthem towards the end of the war.{{Refn |group=g |name=martin, kirkup group}}
Marly played guitar and Druon and d'Astier whistled the melody while they were writing the song.<ref>André Gillois, Histoire secrète des Français à Londres de 1940 à 1944 (Paris: Hachette, 1973), 397.</ref> It was performed by Anna Marly, broadcast by the [[BBC]] and adopted by the [[maquis (WW2)|maquis]]. Marly, Druon, along with [[Claude Dauphin (actor)|Claude Dauphin]], and [[Andre Gillois]] all regularly whistled the song on the BBC right after Marly's singing.<ref>https://www.jstor.org/stable/1260357</ref><ref>https://www.smh.com.au/national/songwriter-and-soldier-gave-france-hope-in-darkest-hours-20090423-agm1.html</ref><ref>https://www.thetimes.com/culture/tv-radio/article/anna-marly-03fp5jl0rwf?eafs_enabled=false</ref>
Marly's songs, singing and whistling on Radio Londres, were an inspiration to the French Resistance and earned her the credit "[[troubadour]] of the Resistance" from General de Gaulle, leader of the French Free Forces.{{Refn |group=g |name=martin, kirkup group}} D'Astier was to become a Chevalier de la Légion d'Honneur (English: Knight of the [[Legion of Honour]]), Compagnon de la Libération (English: [[Order of Liberation|Companion of the Liberation]]) and awarded the [[Croix de Guerre 1939–1945 (France)|Croix de Guerre 1939–1945]].{{R|order of liberation}} In Paris, 1945, [[:fr:Raoul Breton|Raoul Breton]] published the "La Complainte du partisan" [[sheet music]] with lyrics by d'Astier credited to ''Bernard'',{{R|bnf partisan}} his Resistance [[code name]].{{R|martin nytimes}}
===Structure, content and context===
In their examination of the songs of Anna Marly, the [[:fr:Académie de Lyon (éducation)|Académie de Lyon]] describe "La Complainte du partisan" as "{{lang|fr|une vision déchirante de l'engagement des résistants}}" (English: "a heartbreaking vision of the commitment of the Resistance members"), and evaluate its structure and the meaning of its words: the song's lyrics are structured as six [[quatrain]]s; the first and second lines of each is formed with seven syllables, the third line with five syllables and the fourth with six.{{R|ac-lyon}}
In his analysis for the [[University of Freiburg]], Giacomo Bottà describes d'Astier's lyrics as "very straightforward", then continues:{{R|freiburg botta}}
<blockquote>A partisan recalls, in the first person, episodes of his life ... each verse narrates a different situation: life on the run, the loss of the family, that of comrades, the killing of an old man who hid partisans, up to the ending.</blockquote>
The first five verses (quatrains) depict scenes of Nazi occupied France, the expectation of French people to accept the occupation of their country, and the extraordinary reaction of the Resistance. The first line of the song, "{{lang|fr|L'ennemi était chez moi}}" (English: "The enemy was at my house"), where "my house" can be understood as a reference to France, sets the scene. The second line, "{{lang|fr|On m'a dit 'Résigne-toi'}}" (English: "I was told 'Resign yourself{{' "}}), references the common resignation of the French people in response to [[Philippe Pétain]]'s radio address, after the Fall of France, announcing his intention to ask for an armistice with Germany.{{R|ac-lyon}}
In the third and fourth lines, "{{lang|fr|Mais je n'ai pas pu / Et j'ai repris mon arme}}" (English: "But I could not / And I took my weapon"), d'Astier introduces the notion of resistance, with a risk of death, loss of family, friends and identity and leading a secretive and dangerous life on the run, evoked by the lines "{{lang|fr|J'ai changé cent fois de nom / J'ai perdu femme et enfants ... Hier encore, nous étions trois / Il ne reste plus que moi / Et je tourne en rond / Dans la prison des frontières}}" (English: "I changed name a hundred times / I lost wife and children ... Just yesterday, there were three of us / Now there is only me / And I'm going around in circles / Inside the prison of borders").{{R|ac-lyon}}
The dangers d'Astier describes are countered by the expressions "{{lang|fr|Mais j'ai tant d'amis / Et j'ai la France entière}}" (English: "But I have so many friends / And I have the whole of France"), describing the support of the Resistance from the French people. In the final verse, d'Astier expresses his hope and confidence that Resistance will not be futile; "{{lang|fr|Le vent souffle sur les tombes}}" (English: "The wind blows on the graves") evoking a cleansing wind and "{{lang|fr|La liberté reviendra / On nous oubliera / Nous rentrerons dans l'ombre}}" (English: "Freedom will return / We will be forgotten / We will go into the shadows") expressing the confidence that the actions of the mostly anonymous Resistance will have their desired effect.{{R|ac-lyon}}
Marly performed her song self-accompanied by guitar, and introduced each verse instrumentally while whistling the melody.{{R|freiburg botta}}
==Adaptation to English==
{{Further|Hy Zaret}}
Born in Manhattan, New York City in 1907, Hy Zaret was best known as a [[Tin Pan Alley]] lyricist, whose writing credits include those for "Unchained Melody", "[[One Meat Ball]]" and several educational and public service songs. He wrote an English version of "La Complainte du partisan"{{Refn
| group = g
| name = jones, martin group
| {{Plainlist|
* {{Nowrap|Jones, ''Open Culture''}} {{R|jones oc}}
* {{Nowrap|Martin, ''The New York Times''}} {{R|nytimes zaret obit}}
}}
}}{{Refn
| group=g
| name=jones, zaret nytimes obit, telegraph zaret obit, wise, hogan group
| {{Plainlist|
* {{Nowrap|Zaret obit. ''The Telegraph''}} {{R|telegraph zaret obit}}
* {{Nowrap|''The Little Black Songbook''}} {{R|wise cohen}}
* {{Nowrap|Hogan, ''Pitchfork''}} {{R|hogan cohen}}
}}
}} titled "Song of the French partisan", published by the [[Lou Levy (publisher)|Leeds Publishing Corporation]], New York City, August 11, 1944.{{R|CC}}{{R|ac-lyon}} Zaret's adaptation includes three of d'Astier's original French verses, with references to {{lang|fr|L'ennemi}} (English: "The enemy") changed to {{lang|fr|Les Allemands}} (English: "The Germans"), inserted between the penultimate and final English verses.{{R|ac-lyon}} Leonard Cohen used Zaret's adaptation for his creation of "[[#Leonard Cohen's cover version|The Partisan]]", the cover version that popularised the song globally.{{Refn
| group = g
| name = martin, jones and young group
| {{Plainlist|
* {{Nowrap|Jones, Martin}} {{Refn |group=g |name=jones, martin group}}
* {{Nowrap|Young, ''Consequence of Sound''}} {{R|young cos}}
}}
}}
Douglas Martin reported for ''[[The New York Times]]'' that Zaret "loosely translated" the French lyrics,{{R|martin nytimes}} and in his book ''Passion and Ambivalence: Colonialism, Nationalism, and International Law'', author [[Nathaniel Berman]] compares excerpts of d'Astier's original French lyrics alongside, what he calls Zaret's English <!-- the following zero-width-joiner glues the quote-mark to the parentheses -->"‍(mis)translation", and notes that "the two versions reflect very different views"; that Zaret's English suggests that the partisans will "come from the shadows", while the French "{{lang|fr|nous rentrerons dans l'ombre}}", he states as "we will <em>return</em> to the shadow" (emphasis in quote) in English, suggests that the partisans – the Resistance – are "an artifact of the imperialism that dominates [them]", and that "reconciliation of society with its shadows is an illusion".{{R|berman}}
Alex Young, for ''[[Consequence of Sound]]'', describes the differences between the original French and Zaret's English, saying it "downplays the song's historical content – the English lyrics contain no references to France or the Nazi occupation", with an example of literal English translations of the song's first line, "The Germans were at my house" (French: "{{lang|fr|Les Allemands étaient chez moi}}"), being unheard in his English lyrics. Young goes on to compare the literal English translation of the same verse compared by Berman:{{R|young cos}}
{{Listen
| type = music
| header = Comparison of Marly and Cohen performing, respectively, d'Astier's original French and Zaret's English final verse
| filename = Anna Marly - La Complainte du partisan - 1963.ogg<!-- has non-free fair-use rationale, not reviewed as of January 2023 -->
| title = Anna Marly; "La Complainte du partisan"; 1963
| filename2 = Leonard Cohen, The Partisan, 1968 - 28.5 second excerpt of English transition to French.ogg<!-- has non-free fair-use rationale, not reviewed as of January 2023 -->
| title2 = Leonard Cohen; "The Partisan"; 1969
}}
{|
! scope="col" | d'Astier's French<small style="display:block">(as compared by Berman)</small>
! scope="col" | Zaret's English<small style="display:block">(as compared by Berman)</small>
! scope="col" | Literal English translation<small style="display:block">(as compared by Young)</small>
|-
| <blockquote><poem>{{lang|fr|Le vent souffle sur les tombes
La Liberté reviendra
On nous oubliera
Nous rentrerons dans l'ombre}}</poem></blockquote>
| <blockquote><poem>Oh, the wind, the wind is blowing
Through the graves the wind is blowing
Freedom soon will come
Then we'll come from the shadows</poem></blockquote>
| <blockquote><poem>The wind is blowing on the graves
Freedom will come back
Everyone will forget us
We will return to the shadows</poem></blockquote>
|}{{Clear}}
Maurice Ratcliff also noted, in his book ''Leonard Cohen: The Music and The Mystique'', that there are differences between the original French and Zaret's English versions; he comments that Leonard Cohen's "The Partisan" is "substantially Zaret's", and while it does also contain verses sung in the original French, references to "The Germans" in the English verses, "become the more neutral 'soldiers{{' "}} and "the shelter-giving 'old woman' is '{{lang|fr|un vieux[‍[[sic]]] homme}}{{' "}} (English: "an old man").{{R|ratcliff cohen}}
Giacomo Bottà describes Zaret's adaptation as "relatively faithful",{{R|freiburg botta}} while in the Académie de Lyon's evaluation of "La Complainte du partisan", its adaptation and cover versions, they write:{{R|ac-lyon}}
<blockquote>{{lang|fr|La version de Léonard Cohen propose une traduction fidèle, sauf la dernière strophe, qui est bien plus positive: les résistants sortiront de l'ombre et la liberté sera revenue. Le résistant est montré davantage comme un héros, qui est placé dans la lumière, une fois la liberté revenue.}} (English: The version of Leonard Cohen offers a faithful translation, except the last stanza, which is much more positive: the resistants will come out of the shadows and freedom will return. The resistance fighter is shown more as a hero, who is placed in the light, once freedom has returned).</blockquote>
They state that:{{R|ac-lyon}}
<blockquote>{{lang|fr|Cohen était fasciné par cette chanson et se demandait d'ailleurs "si la musique et les écrits n'avaient pas, à eux seuls, renversé Hitler"}} (English: Cohen was fascinated by this song and wondered, moreover, "if music and writings alone did not overthrow Hitler").</blockquote>
==Leonard Cohen's cover version==
{{Infobox song
| name = The Partisan
| cover = Leonard Cohen - The Partisan (B-side - Bird on the Wire) - 1969 CBS (4262) 7-inch single cover art.jpg
| type = single
| artist = [[Leonard Cohen]]
| album = [[Songs from a Room]]
| B-side = [[Bird on the Wire]]
| released = {{Start date|1969|05|30}}
| recorded = {{Start date|1968|10}}
| studio = Columbia Studio A, Nashville
| genre = [[Folk music|Folk]]
| length = {{Duration|m=3|s=37}}
| label = [[CBS]]
| composer = [[Anna Marly]]
| lyricist =
* [[Emmanuel d'Astier de La Vigerie]]
* [[Hy Zaret]]
| producer = [[Bob Johnston]]
| prev_year = 1968
| prev_title = [[So Long, Marianne]]
| next_title = [[Joan of Arc (Leonard Cohen song)|Joan of Arc]]
| next_year = 1971
}}
While living at a rented farm in [[Franklin, Tennessee]], Leonard Cohen worked on his second album ''[[Songs from a Room]]'' with [[Bob Johnston]], its producer. In the candlelit [[Columbia Records|Columbia]] Studio A on [[Music Row]], Nashville,{{R|lynskey cohen}} Johnston created a relaxed atmosphere for, what Mike Evans, in his book ''Leonard Cohen: An Illustrated Record'', calls "suitable, and non-intrusive, backing" by the assembled session musicians: [[Charlie Daniels]] on bass, fiddle and guitar, [[Ron Cornelius]] on guitars, Bubba Fowler on banjo, bass, fiddle and guitar, and Johnston himself playing keyboards. Ten songs were recorded in one eight-hour session, half of which ended up on the album.{{R|ratcliff cohen}}{{Refn
| group = g
| name = young, evans group
| {{Plainlist|
* {{Nowrap|Young, ''Consequence of Sound''}} {{R|young cos}}
* {{Nowrap|Evans, ''Leonard Cohen: An Illustrated Record''}} {{R|evans cohen}}
}}}}
The recording of "The Partisan" utilized only a classical guitar, double bass, and accordion along with vocals by Cohen and female voices. Bottà states, of Cohen's recording of Zaret's adaptation, that "the melody and chord structure is considerably different from the original" by Marly.{{R|freiburg botta}}
Both writing for ''[[The Guardian]]'', [[Adam Sweeting]], in Cohen's obituary, and Dorian Lynskey, in his music blog article, refer to ''Songs from a Room'' as being bleak. Sweeting states that it is "another powerful but bleak collection",{{R|guardian cohen obit}} while Lynskey calls it "sparser and bleaker than the debut",{{R|lynskey cohen}} ''[[Songs of Leonard Cohen]]''.
Cohen first learned "La Complainte du partisan" from ''[[People's Songs|The People's Songbook]]'' as a fifteen-year-old boy at summer-camp in 1950.{{R|nadel cohen}} Using Zaret's predominantly English adaptation to record the song, with the title "The Partisan",{{R|hogan cohen}} left Cohen dissatisfied, and he suggested to Johnston that French voices were needed on the track. Johnston reportedly arranged to fly with Cohen to Paris, for "authenticity" according to Maurice Ratcliff, to record a trio of female singers and an accordion player, whose work was [[overdub]]bed on to the track.{{R|ratcliff cohen}}{{Refn |group=g |name=young, evans group}} The song fades into an intro, followed by nine verses and an outro that fades out; the first five verses are sung from Zaret's English, followed by verses six, seven and eight being sung in French, and the final verse nine being a repeat of the English verse five.{{R|wise cohen}}
In May 1969, [[CBS]] released the album track, "The Partisan", in Europe as a [[7-inch single]] with, in the initial format, "[[Bird on the Wire]]", and in a later format, "[[Suzanne (Leonard Cohen song)|Suzanne]]" on the [[A-side and B-side|B-side]].{{R |kubernik cohen |mb cohen single}}
"The Partisan" was to be Cohen's first commercial recording of a song he did not write;{{R|evans cohen}} writing about Cohen's cover versions of other's songs, in his article for ''[[Pitchfork (website)|Pitchfork]]'', published soon after Cohen's death, [[Marc Hogan]] refers to Cohen's "The Partisan" as a "wonderfully affecting ... haunting version",{{R|hogan cohen}} and Josh Jones, writing for ''Open Culture'', describes it as having a "folk melody and melancholy lyricism",{{R|jones oc}} with what Ratcliff calls a "plodding bass line underpinning the simply strummed guitar and an occasional accordion" and "a rare excursion ... into political territory".{{R|ratcliff cohen}} Tim Nelson, in his BBC review of Cohen's albums, also refers to the song's "biting political commentary".{{R|nelson review}}
===Cultural impact===
Alex Young writes that "[Cohen] is often incorrectly credited as the composer of the [original] song – although he is certainly responsible for its survival",{{R|young cos}} Douglas Martin states that {{" '}}The Partisan' gained popularity" in the United States thanks to Cohen's recording,{{R|martin nytimes}} and Josh Jones writes that the song "[has] become so closely associated with Cohen that it has often been credited to him", with Cohen reportedly remarking, "I kind of re-introduced ['The Partisan'] into the world of popular music. I feel I wrote it, but I actually didn't" (bracketed content in source).{{R|jones oc}} Hogan writes that Cohen's version "became one of his signature songs, leading to renditions by Joan Baez, Buffy Sainte-Marie, [[Electrelane]], [[First Aid Kit (band)|First Aid Kit]], and many others."{{R|hogan cohen}}
Evans writes about a Polish translation of Cohen's—Zaret's—song being adopted as an unofficial anthem of the [[Solidarity (Polish trade union)|Solidarity]] movement for democracy in the detention camps of [[History of Poland (1945–1989)|communist Poland]], one of the countries in which Cohen performed while on the [[Various Positions Tour]] in 1985, supporting his album that spawned "[[Hallelujah (Leonard Cohen song)|Hallelujah]]", ''[[Various Positions]]''.{{R|evans cohen}}
==Other cover versions==
Luke Reilly, reporting for an article in ''[[IGN]]'' about the creation of Australian composer [[Mick Gordon (composer)|Mick Gordon]]'s version of "The Partisan" for the closing credits of the 2015 [[video game]] ''[[Wolfenstein: The Old Blood]]'', a game in [[Wolfenstein|a series]] depicting the events of a fictionalised World War II, refers to Cohen's "The Partisan" as being "perhaps" the most famous, and reports that the audio director on Wolfenstein, Nicholas Raynor, also called Cohen's version "a famous one"; according to Gordon, it was Raynor's idea to do a cover for the game. The Australian singer-songwriter [[Tex Perkins]] was Gordon's first choice to sing his version. Reilly says "the song itself is poignant and heartrending, yet incredibly stirring and motivational. A song that simultaneously mourns what's been lost and steels listeners for a fight to come" and that Gordon and Perkin's version "begins with a softly haunting acoustic intro before escalating to stomping blasts of distorted guitar and heaving drumming".{{R|reilly gordon}}
Recording their 2005 album ''[[Axes (album)|Axes]]'' live in the studio, English group Electrelane included a version of "The Partisan" on the release. Andy Gill, reviewing the album for ''[[The Independent]]'', described their style as "a sort of cross between [[Krautrock]], [[klezmer]] and [[free jazz]] that thrives on the enthusiasm of performance", and that their version is "still recognisable ... despite the churning thrash they give it".{{R |hogan cohen |gill electrelane}}
Canadian group [[Po' Girl]] included a version on their 2007 album, ''[[Home to You (Po' Girl album)|Home to You]]'', which Sue Keogh described, in her review for the BBC, as an "acoustic mix of guitars, banjos and violin, plus a couple of moments of clarinet and trumpet or wry comments from [[performance poet]] CV Avery to keep you on your toes", having a "gentle acoustic sound" with a "bright and breezy yet intimate and charming atmosphere".<!-- BBC content by-nc-sa/3.0 licensed -->{{R|keogh po girl}} David Jeffries called the album a "layered, insightful, and achingly poignant triumph" in his review for [[AllMusic]].{{R|am po girl}}
Betty Clarke, for ''the Guardian'', reviewed a live show at the Village Underground, London by American group [[Other Lives (band)|Other Lives]] in 2012, where they performed a cover of "The Partisan". Clarke says the band create "indie-pop with the scope, precision and polish of [[Fleetwood Mac]]'s ''[[Rumours (album)|Rumours]]''" (emphasis added), and that their performance of "The Partisan" "encompass[ed] all the elements of Other Lives' sound".{{R|clarke other lives}}
Versions of "The Partisan" have been performed, recorded and released by many other artists, with none being so widely referenced as that by Joan Baez{{R |reilly gordon |hogan cohen}} in 1972,{{Refn
| group=g
| name=jones, martin, young, evans group
| {{Plainlist|
* {{Nowrap|Jones, Martin}} {{Refn |group=g |name=jones, martin group}}
* {{Nowrap|Young, Evans}} {{Refn |group=g |name=young, evans group}}
}}
}} on her album ''Come from the Shadows'',{{R|mb baez album}} the name of which is derived from Zaret's English lyrics.{{R|baez memoir}}
===Song of the French Partisan===
{{Infobox song
| name = Song of the French Partisan
| type = song
| artist = [[Buffy Sainte-Marie]]
| album = [[She Used to Wanna Be a Ballerina]]
| A-side = Soldat Bleu
| released = {{Start date|1970}}
| genre =
* [[Folk music|Folk]]
* [[pop rock]]
| length = {{Duration|m=3|s=16}}
| label = [[Vanguard Records|Vanguard]]
| composer = [[Anna Marly]]
| lyricist =
* {{Nowrap|[[Emmanuel d'Astier de La Vigerie]]}}
* [[Hy Zaret]]
| producer =
* [[Jack Nitzsche]]
* {{Nowrap|[[Buffy Sainte-Marie]]}}
}}
[[File:Buffy Sainte-Marie -performing at the Grand Gala du Disque 1968.png|thumb|upright=0.5|left|[[Buffy Sainte-Marie]] performing at the [[Edison Award|Grand Gala du Disque]] in 1968|alt=A young woman playing a classical guitar]]
In 1970, Canadian singer-songwriter Buffy Sainte-Marie provided the title song for the film ''[[Soldier Blue]]'',{{Refn
| group = g
| name = ruhlmann, positif, jeune group
| {{Plainlist|
* {{Nowrap|Ruhlmann, ''AllMusic'' review}} {{R|ruhlmann review}}
* {{Nowrap|''Positif'' magazine}} {{R|positif}}
* {{Nowrap|''Jeune Cinéma'' magazine}} {{R|jeune}}
}}
}} first released as a 7-inch single in France in 1970 by [[Vanguard Records]] with the title "Soldat Bleu", and elsewhere in 1971 by [[RCA Victor]] as "Soldier Blue", all releases featuring "Song of the French Partisan", the title as published by Zaret,{{R|bnf partisan}}{{R|CC}} a "folk tune she learned from Leonard Cohen" according to Andrea Warner in her book, ''Buffy Sainte-Marie: The Authorized Biography'',{{R|warner sainte-marie bio}} on the B-side.{{R|ocde soldier}} Both songs were included on her 1971 album ''[[She Used to Wanna Be a Ballerina]]''.{{R |ruhlmann review |warner sainte-marie bio}} The RCA release of "Soldier Blue" was a top-10 hit in the United Kingdom in 1971, spending eighteen weeks on the singles chart, four in the top-10, two at number seven.{{R |hogan cohen |ocuk soldier}}
Another version to be produced by Bob Johnston was recorded by Israeli singer Esther Ofarim, who had previously taken second place for Switzerland in the [[Eurovision Song Contest 1963|1963 Eurovision Song Contest]]{{R |ev ofarim |ev fiasco}} and had, with her then husband [[Abi Ofarim]], a British number one hit with the novelty song "[[Cinderella Rockefella]]" in 1968.{{R |am ofarim bio |charts orarim}} She released the cover on her [[eponymous]] 1972 album ''Esther Ofarim''; in his review for AllMusic, Richie Unterberger calls Ofarim's recording of the song one of the highlights, awarding the album three of a possible five stars.{{R|am ofarim review}}
{{Clear}}
==See also==
{{Portal|Music|France}}
* [[Protest song]] – a song that is associated with a movement for [[social change]]
* {{Section link|Psychological warfare#World War II}} – the use of radio to disseminate [[propaganda]] during World War II
* "[[We'll Meet Again]]" – a 1939 song made famous by singer [[Vera Lynn]] which resonated with soldiers and their families during World War II
* "[[A Change Is Gonna Come]]" – a 1964 song by American recording artist [[Sam Cooke]] which became an anthem for [[African Americans]] and the [[Civil Rights Movement]]
* ''[[The Sorrow and the Pity]]'' – a two-part 1969 documentary film by [[Marcel Ophüls]] about the collaboration between the [[Vichy France|Vichy]] government and Nazi Germany during World War II – featuring interviews with and archival footage of Emmanuel d'Astier de La Vigerie
==References==
'''Groups'''
{{Reflist|group=g|30em}}
'''Sources'''
{{Reflist|refs=
<!-- Books -->
<ref name="ratcliff cohen">{{Cite book
| medium = Book
| title = Leonard Cohen: The Music and The Mystique
| first = Maurice
| last = Ratcliff
| chapter = Part 1: Studio albums
| publisher = [[Omnibus Press]]
| year = 2012
| isbn = 9780857128225
| chapter-url = https://books.google.com/books?id=ujgDAwAAQBAJ&q=%22the+partisan%22
| via = [[Google Books]]
}}</ref>
<ref name="craig book">{{Cite book
| medium = Book
| title = Sovereignty, War, and the Global State
| first = Dylan
| last = Craig
| page = 110
| publisher = [[Springer Publishing]]
| year = 2019
| isbn = 9783030198862
| url = https://books.google.com/books?id=QXCfDwAAQBAJ&q=%22La+Complainte+du+partisan%22
| via = [[Google Books]]
}}</ref>
<ref name="wise cohen">{{Cite book
| medium = Book
| title = The Little Black Songbook: Leonard Cohen
| author = Wise Publications
| chapter = The Partisan
| pages = 124–125
| year = 2012
| publisher = Wise Publications
| isbn = 9780857129192
| chapter-url = https://books.google.com/books?id=OGvHDgAAQBAJ&q=%22the+partisan%22
| via = [[Google Books]]
}}</ref>
<ref name="berman">{{Cite book
| medium = Book
| title = Passion and Ambivalence: Colonialism, Nationalism, and International Law
| first = Nathaniel
| last = Berman
| author-link = Nathaniel Berman
| translator-first1 = Euan
| translator-last1 = MacDonald
| pages = 455–456
| publisher = [[Martinus Nijhoff Publishers]]
| year = 2011
| isbn = 9789004210240
| url = https://books.google.com/books?id=1oga8OOqW40C&q=%22La+Complainte+du+partisan%22
| via = [[Google Books]]
}}</ref>
<ref name="evans cohen">{{Cite book
| medium = Book
| title = Leonard Cohen: An Illustrated Record
| first = Mike
| last = Evans
| year = 2018
| publisher = [[Plexus Publishing]]
| isbn = 9780859658690
| url = https://books.google.com/books?id=lA5tDwAAQBAJ&q=%22the+partisan%22
| via = [[Google Books]]
}}</ref>
<ref name="kubernik cohen">{{Cite book
| medium = Book
| title = Leonard Cohen: Everybody Knows
| first = Harvey
| last = Kubernik
| author-link = Harvey Kubernik
| chapter = 7" and 12" Vinyl Singles, EPs and CD-Singles
| year = 2017
| publisher = [[Omnibus Press]]
| isbn = 9781783238163
| chapter-url = https://books.google.com/books?id=0AYxCwAAQBAJ&q=%22the+partisan%22+4262
| via = [[Google Books]]
}}</ref>
<ref name="baez memoir">{{Cite book
| medium = Book
| title = And A Voice to Sing With: A Memoir
| first = Joan
| last = Baez
| author-link = Joan Baez
| pages = 169–170
| publisher = [[Simon and Schuster]]
| year = 2012
| isbn = 9781451688405
| url = https://books.google.com/books?id=4Lw5Y0nsWd0C&q=partisan
| via = [[Google Books]]
}}</ref>
<ref name="warner sainte-marie bio">{{Cite book
| medium = Book
| title = Buffy Sainte-Marie: The Authorized Biography
| first = Andrea
| last = Warner
| chapter = Better to find out for yourself
| publisher = [[Greystone Books]]
| year = 2018
| isbn = 9781771643597
| chapter-url = https://books.google.com/books?id=m2JmDwAAQBAJ&q=%22The+song+of+the+French+partisan%22
| via = [[Google Books]]
}}</ref>
<ref name="nadel cohen">{{Cite book
| medium = Book
| title = Various Positions: A Life of Leonard Cohen
| first = Ira B.
| last = Nadel
| author-link = Ira Nadel
| publisher = [[Random House of Canada]]
| year = 2010
| isbn = 9780307367020
| url = https://books.google.com/books?id=p44Jtck3VCAC&q=%22the+people%27s+songbook%22
| via = [[Google Books]]
}}</ref>
<ref name="CC">{{Cite book
| medium = Book
| title = Catalog of Copyright Entries: Musical compositions, Part 3
| publisher = [[Library of Congress]], Copyright Office
| year = 1944
| page = 1421
| url = https://books.google.com/books?id=yj5jAAAAIAAJ&q=%22song+of+the+french+partisan%22
| via = [[Google Books]]
}}</ref>
<!-- Journals -->
<ref name="king dAstier">{{Cite journal
| medium = Journal
| journal = Journal of Contemporary History
| volume = 8
| issue = 4
| year = 1973
| publisher = [[SAGE Publications]]
| title = Emmanuel d'Astier and the Nature of the French Resistance
| pages = 25–34
| first = Jonathan H.
| last = King
| jstor = 260126
| doi = 10.1177/002200947300800402
| s2cid = 159925576
}}</ref>
<!-- Magazines -->
<ref name="positif">{{Cite magazine
| medium = Magazine
| magazine = [[Positif (magazine)|Positif]]
| title = Positif, Issues 123-133
| year = 1971
| publisher = Nouvelles éditions
| language = fr
| url = https://books.google.com/books?id=JTtAAQAAIAAJ&q=%22Buffy+Sainte-Marie%22+%22Soldat+Bleu%22
| via = [[Google Books]]
}}</ref>
<ref name="jeune">{{Cite magazine
| medium = Magazine
| magazine = [[:fr:Jeune Cinéma|Jeune Cinéma]]
| title = Jeune cinéma, Issues 53-62
| year = 1971
| publisher = Fédération Jean Vigo
| language = fr
| url = https://books.google.com/books?id=p2Q9AAAAIAAJ&q=%22Buffy+Sainte-Marie%22
| via = [[Google Books]]
}}</ref>
<!-- News -->
<ref name="guardian cohen obit">{{Cite news
| url = https://www.theguardian.com/music/2016/nov/11/leonard-cohen-obituary
| url-status = live
| archive-url = https://web.archive.org/web/20200829145429/https://www.theguardian.com/music/2016/nov/11/leonard-cohen-obituary
| archive-date = August 29, 2020
| access-date = October 23, 2020
| website = [[The Guardian]]
| department = Obituaries
| title = Leonard Cohen obituary
| first = Adam
| last = Sweeting
| author-link = Adam Sweeting
| date = November 11, 2016
}}</ref>
<ref name="martin nytimes">{{Cite news
| url = https://www.nytimes.com/2006/03/13/world/europe/anna-marly-88-dies-inspired-french-resistance-in-song.html
| url-status = live
| archive-url = https://web.archive.org/web/20170918001416/https://www.nytimes.com/2006/03/13/world/europe/anna-marly-88-dies-inspired-french-resistance-in-song.html
| archive-date = September 18, 2017
| access-date = August 13, 2019
| url-access = subscription
| website = [[The New York Times]]
| title = Anna Marly, 88, Dies; Inspired French Resistance in Song
| first = Douglas
| last = Martin
| date = March 13, 2016
}}</ref>
<ref name="nytimes zaret obit">{{Cite news
| url = https://www.nytimes.com/2007/07/03/arts/03zaret.html
| url-status = live
| archive-url = https://web.archive.org/web/20200810002754/https://www.nytimes.com/2007/07/03/arts/03zaret.html
| archive-date = August 10, 2020
| access-date = October 23, 2020
| website = [[The New York Times]]
| department = Arts
| title = Hy Zaret, 99, Tin Pan Alley Lyricist, Is Dead
| first = Douglas
| last = Martin
| date = July 3, 2007
}}</ref>
<ref name="telegraph zaret obit">{{Cite news
| url = https://www.telegraph.co.uk/news/obituaries/1556693/Hy-Zaret.html
| url-status = live
| archive-url = https://web.archive.org/web/20190813032922/https://www.telegraph.co.uk/news/obituaries/1556693/Hy-Zaret.html
| archive-date = August 13, 2019
| access-date = October 23, 2020
| website = [[Telegraph.co.uk|The Telegraph]]
| department = Obituaries
| title = Hy Zaret
| date = July 7, 2007
}}</ref>
<ref name="kirkup marly obit">{{Cite news
| url = https://www.independent.co.uk/news/obituaries/anna-marly-6108581.html
| url-status = live
| archive-url = https://web.archive.org/web/20190813042807/https://www.independent.co.uk/news/obituaries/anna-marly-6108581.html
| archive-date = August 13, 2019
| access-date = October 23, 2020
| website = [[The Independent]]
| department = Obituaries
| title = Anna Marly: 'Troubadour of the Resistance'
| first = James
| last = Kirkup
| author-link = James Kirkup
| date = February 21, 2006
}}</ref>
<ref name="telegraph marly obit">{{Cite news
| url = https://www.telegraph.co.uk/news/obituaries/1511643/Anna-Marly.html
| url-status = live
| archive-url = https://web.archive.org/web/20190816103007/https://www.telegraph.co.uk/news/obituaries/1511643/Anna-Marly.html
| archive-date = August 16, 2019
| access-date = October 24, 2020
| website = [[Telegraph.co.uk|The Telegraph]]
| department = Obituaries
| title = Anna Marly
| date = February 28, 2006
}}</ref>
<!-- Web -->
<ref name="bnf partisan">{{Cite web
| url = https://catalogue.bnf.fr/ark:/12148/cb431354120
| website = BnF
| title = Notice bibliographique La Complainte du partisan--Song of the French partisan. Paroles de Bernard
| trans-title = Bibliographic Record The lament of the partisan - Song of the French partisan. Bernard's words
| publisher = [[Bibliothèque nationale de France]]
| language = fr
| access-date = August 29, 2019
}}</ref>
<ref name="bnf dAstier">{{Cite web
| url = https://data.bnf.fr/fr/11889316/emmanuel_d__astier_de_la_vigerie/
| website = BnF
| title = Emmanuel of Astier de La Vigerie (1900-1969)
| publisher = [[Bibliothèque nationale de France]]
| language = fr
| access-date = September 6, 2019
}}</ref>
<ref name="order of liberation">{{Cite web
| url = https://www.ordredelaliberation.fr/fr/compagnons/emmanuel-astier-de-la-vigerie-d
| url-status = live
| archive-url = https://web.archive.org/web/20200809205819/https://www.ordredelaliberation.fr/fr/compagnons/emmanuel-astier-de-la-vigerie-d
| archive-date = August 9, 2020
| access-date = October 23, 2020
| website = Musée de l'Ordre de la Libération
| title = Emmanuel d'Astier of the Vigerie
| language = fr
}}</ref>
<ref name="fondation resistance">{{Cite web
| url = http://www.fondationresistance.org/pages/rech_doc/emmanuel-astier-vigerie_portrait9.htm
| url-status = live
| archive-url = https://web.archive.org/web/20200809021836/http://www.fondationresistance.org/pages/rech_doc/emmanuel-astier-vigerie_portrait9.htm
| archive-date = August 9, 2020
| access-date = October 23, 2020
| website = fondation de la résistance
| title = Profiles: Emmanuel d'Astier of the Vigerie
| language = fr
}}</ref>
<ref name="ac-lyon">{{Cite web
| url = http://www2.ac-lyon.fr/ressources/rhone/arts-culture/IMG/pdf/la_complainte_du_partisan.pdf
| url-status = dead
| archive-url = https://web.archive.org/web/20190812011816/http://www2.ac-lyon.fr/ressources/rhone/arts-culture/IMG/pdf/la_complainte_du_partisan.pdf
| archive-date = August 12, 2019
| access-date = October 23, 2020
| website = Académie de Lyon
| title = La Complainte du partisan
| publisher = [[:fr:Académie de Lyon (éducation)|Academy of Lyon]]
| language = fr
}}</ref>
<ref name="freiburg botta">{{Cite web
| url = https://portal.uni-freiburg.de/songlexikon/songs/thepartisan
| url-status = dead
| archive-url = https://web.archive.org/web/20160428051633/https://portal.uni-freiburg.de/songlexikon/songs/thepartisan
| archive-date = April 28, 2016
| website = Albert-Ludwigs-Universität Freiburg
| title = La complainte du partisan / The Partisan — Songlexikon
| first = Giacomo
| last = Bottà
| publisher = [[University of Freiburg]]
| date = July 24, 2014
| access-date = August 4, 2020
}}</ref>
<ref name="jones oc">{{Cite web
| url = http://www.openculture.com/2018/09/tom-waits-releases-timely-cover-italian-anti-fascist-anthem-bella-ciao-first-new-song-two-years.html
| url-status = live
| archive-url = https://web.archive.org/web/20200725163543/http://www.openculture.com/2018/09/tom-waits-releases-timely-cover-italian-anti-fascist-anthem-bella-ciao-first-new-song-two-years.html
| archive-date = July 25, 2020
| access-date = October 23, 2020
| website = Open Culture
| title = Tom Waits Releases a Timely Cover of the Italian Anti-Fascist Anthem "Bella Ciao," His First New Song in Two Years
| first = Josh
| last = Jones
| date = September 14, 2018
}}</ref>
<ref name="reilly gordon">{{Cite web
| url = https://uk.ign.com/articles/2016/12/12/pentagrams-and-partisans-mick-gordon-on-making-music-that-matters
| url-status = live
| archive-url = https://web.archive.org/web/20190812000811/https://www.ign.com/articles/2016/12/12/pentagrams-and-partisans-mick-gordon-on-making-music-that-matters
| archive-date = August 12, 2019
| access-date = October 23, 2020
| website = [[IGN]]
| title = Pentagrams and Partisans: Mick Gordon on Making Music That Matters
| first = Luke
| last = Reilly
| publisher = [[Ziff Davis]]
| date = October 19, 2017
}}</ref>
<ref name="young cos">{{Cite web
| url = https://consequence.net/2009/01/rock-history-101-leonard-cohen-the-partisan/
| url-status = live
| archive-url = https://web.archive.org/web/20190812192301/https://consequenceofsound.net/2009/01/rock-history-101-leonard-cohen-the-partisan/
| archive-date = August 12, 2019
| access-date = October 23, 2020
| website = [[Consequence of Sound]]
| title = Rock History 101: Leonard Cohen – "The Partisan"
| first = Alex
| last = Young
| date = January 14, 2009
}}</ref>
<ref name="lynskey cohen">{{Cite web
| url = https://www.theguardian.com/music/musicblog/2016/nov/11/leonard-cohen-he-knew-things-about-life-and-if-you-listened-you-could-learn
| url-status = live
| archive-url = https://web.archive.org/web/20201008040823/https://www.theguardian.com/music/musicblog/2016/nov/11/leonard-cohen-he-knew-things-about-life-and-if-you-listened-you-could-learn
| archive-date = October 8, 2020
| access-date = October 23, 2020
| website = [[The Guardian]]
| department = Music blog
| title = Leonard Cohen – he knew things about life, and if you listened you could learn
| first = Dorian
| last = Lynskey
| date = November 11, 2016
}}</ref>
<ref name="hogan cohen">{{Cite web
| url = https://pitchfork.com/thepitch/1361-7-covers-leonard-cohen-made-his-own/
| url-status = live
| archive-url = https://web.archive.org/web/20201001110857/https://pitchfork.com/thepitch/1361-7-covers-leonard-cohen-made-his-own/
| archive-date = October 1, 2020
| access-date = October 23, 2020
| website = [[Pitchfork (website)|Pitchfork]]
| department = The Pitch
| title = 7 Covers Leonard Cohen Made His Own
| first = Marc
| last = Hogan
| author-link = Marc Hogan
| date = November 11, 2016
}}</ref>
<ref name="nelson review">{{Cite web
| url = https://www.bbc.co.uk/music/reviews/3f54/
| url-status = live
| archive-url = https://web.archive.org/web/20190814202334/https://www.bbc.co.uk/music/reviews/3f54/
| archive-date = August 14, 2019
| access-date = October 23, 2020
| website = [[BBC]]
| title = Leonard Cohen The Songs of Leonard Cohen, Songs from a Room, Songs of Love and Hate Review
| first = Tim
| last = Nelson
| year = 2007
}}</ref>
<ref name="gill electrelane">{{Cite web
| url = https://www.independent.co.uk/arts-entertainment/music/reviews/album-electrelane-236888.html
| url-status = live
| archive-url = https://web.archive.org/web/20190812200751/https://www.independent.co.uk/arts-entertainment/music/reviews/album-electrelane-236888.html
| archive-date = August 12, 2019
| access-date = October 23, 2020
| website = [[The Independent]]
| title = Album: Electrelane
| first = Andy
| last = Gill
| date = May 6, 2005
}}</ref>
<ref name="clarke other lives">{{Cite web
| url = https://www.theguardian.com/music/2012/apr/05/other-lives-review
| url-status = live
| archive-url = https://web.archive.org/web/20190811224318/https://www.theguardian.com/music/2012/apr/05/other-lives-review
| archive-date = August 11, 2019
| access-date = October 23, 2020
| website = [[The Guardian]]
| title = Other Lives – review
| first = Betty
| last = Clarke
| date = April 5, 2012
}}</ref>
<ref name="keogh po girl">{{Cite web
| url = https://www.bbc.co.uk/music/reviews/nv63/
| url-status = live
| archive-url = https://web.archive.org/web/20190816205228/https://www.bbc.co.uk/music/reviews/nv63/
| archive-date = August 16, 2019
| access-date = October 23, 2020
| website = [[BBC]]
| title = Po' Girl Home To You Review
| first = Sue
| last = Keogh
| year = 2007
}}</ref>
<ref name="ocde soldier">{{Cite web
| url = https://www.offiziellecharts.de/titel-details-68247
| url-status = live
| archive-url = https://web.archive.org/web/20190818041250/https://www.offiziellecharts.de/titel-details-68247
| archive-date = August 18, 2019
| access-date = October 24, 2020
| website = [[Offizielle Deutsche Charts]]
| title = Offizielle Deutsche Charts: Soldier Blue
| trans-title = Official German Charts: Soldier Blue
| language = de
| publisher = [[GfK Entertainment charts|GfK Entertainment]]
}}</ref>
<ref name="ocuk soldier">{{Cite web
| url = https://www.officialcharts.com/search/singles/soldier-blue/
| url-status = live
| archive-url = https://web.archive.org/web/20190524195519/https://www.officialcharts.com/search/singles/soldier-blue/
| archive-date = May 24, 2019
| access-date = October 24, 2020
| website = [[Official Charts]]
| title = Official UK Singles Chart: Soldier Blue
}}</ref>
<ref name="ev ofarim">{{Cite web
| url = https://eurovision.tv/event/london-1963/participants
| url-status = live
| archive-url = https://web.archive.org/web/20200918133502/https://eurovision.tv/event/london-1963/participants
| archive-date = September 18, 2020
| access-date = October 24, 2020
| website = [[Eurovision Song Contest]]
| title = London 1963
}}</ref>
<ref name="ev fiasco">{{Cite web
| url = https://eurovision.tv/story/recalling-the-50th-anniversary-of-the-1963-contest
| url-status = live
| archive-url = https://web.archive.org/web/20200521131604/https://eurovision.tv/story/recalling-the-50th-anniversary-of-the-1963-contest
| archive-date = May 21, 2020
| access-date = October 24, 2020
| website = [[Eurovision Song Contest]]
| title = Recalling the 50th anniversary of the 1963 contest
| date = March 23, 2013
}}</ref>
<ref name="charts orarim">{{Cite web
| url = https://www.officialcharts.com/search/singles/cinderella-rockefella/
| url-status = live
| archive-url = https://web.archive.org/web/20201002002421/https://www.officialcharts.com/search/singles/cinderella-rockefella/
| archive-date = October 2, 2020
| access-date = October 24, 2020
| website = [[Official Charts]]
| title = Official singles chart results matching: Cinderella Rockefella
}}</ref>
<!-- Web / AllMusic -->
<ref name="am po girl">{{AllMusic
| id = mw0000558383
| title = AllMusic review by David Jeffries of Home to You by Po' Girl
| class = album
| first = David
| last = Jeffries
| accessdate = August 15, 2019
}}</ref>
<ref name="ruhlmann review">{{AllMusic
| id = mw0000096876
| title = AllMusic review by William Ruhlmann of She Used to Wanna Be a Ballerina by Buffy Sainte-Marie
| class = album
| first = William
| last = Ruhlmann
| accessdate = August 15, 2019
}}</ref>
<ref name="am ofarim review">{{AllMusic
| id = mw0001111689
| title = AllMusic review by Richie Unterberger of Esther Ofarim's eponymous album
| class = album
| first = Richie
| last = Unterberger
| accessdate = August 15, 2019
}}</ref>
<ref name="am ofarim bio">{{AllMusic
| id = mn0000528440
| title = Esther Ofarim: Biography
| class = artist
| first = Richie
| last = Unterberger
| accessdate = August 16, 2019
}}</ref>
<!-- MusicBrainz - These should ideally be replaced -->
<ref name="mb baez album">{{MusicBrainz release
| mbid = 9548ddda-d807-46da-99ba-b4ab91c2a3eb
| name = Come From The Shadows by Joan Baez
}}</ref>
<ref name="mb cohen single">{{MusicBrainz release group
| mbid = c69e0ac2-2de4-4f0e-8d69-8c23163fe3c0
| name = The Partisan by Leonard Cohen
}}</ref>
<!-- Not used inline yet -->
}}
{{refbegin}}
* {{Cite web
| url = https://www.musee-armee.fr/collections/explorer-les-collections/portofolios/les-femmes-a-travers-les-collections-du-musee-de-larmee.html
| title = Les femmes à travers les collections du musée de l'Armée
| trans-title = Women through the collections of the Musée de l'Armée
| publisher = [[Musée de l'armée]]
| language = fr
| archive-url = https://web.archive.org/web/20200812152945/https://www.musee-armee.fr/collections/explorer-les-collections/portofolios/les-femmes-a-travers-les-collections-du-musee-de-larmee.html
| archive-date = August 12, 2020
| url-status = live
| access-date = April 27, 2023
}}
* {{Cite book
| medium = Book
| title = Buffy Sainte-Marie: The Authorized Biography
| first = Andrea
| last = Warner
| chapter = Suffer the Little Children
| chapter-url = https://books.google.com/books?id=m2JmDwAAQBAJ&q=born
| publisher = [[Greystone Books]]
| year = 2018
| isbn = 9781771643597
| quote = There's no official record of Buffy Sainte-Marie's birth ... she was born ... most likely in 1941, on or around February 20th
| via = [[Google Books]]
}}
* {{Cite web
| url = https://www.npr.org/2018/09/29/652791230/buffy-sainte-maries-authorized-biography-serves-as-a-map-of-hope?t=1565934257569
| url-status = live
| archive-url = https://web.archive.org/web/20190816072041/https://www.npr.org/2018/09/29/652791230/buffy-sainte-maries-authorized-biography-serves-as-a-map-of-hope?t=1565934257569
| archive-date = August 16, 2019
| access-date = October 24, 2020
| title = Buffy Sainte-Marie's Authorized Biography Serves As A 'Map Of Hope'
| website = [[NPR]]
| date = September 29, 2018
| first = Scott
| last = Simon
| author-link = Scott Simon
| quote = [Buffy Sainte-Marie] doesn't know her exact birthday
}}
* {{Cite web
| url = http://joanbaez.com/bio/
| url-status = live
| archive-url = https://web.archive.org/web/20200224002154/http://joanbaez.com/bio/
| archive-date = February 24, 2020
| access-date = October 24, 2020
| website = Joan Baez
| title = Bio info: Chronology
| publisher = [[Joan Baez|Joan C. Baez]] / Diamonds & Rust Productions
| quote = 1941 Joan Chandos Baez is born on January 9
}}
* {{Cite news
| url = https://www.thetimes.com/article/anna-marly-03fp5jl0rwf
| url-status = live
| archive-url = https://web.archive.org/web/20190815131642/https://www.thetimes.co.uk/article/anna-marly-03fp5jl0rwf
| archive-date = August 15, 2019
| access-date = October 24, 2020
| url-access = subscription
| website = [[The Times]]
| title = Anna Marly
| date = February 24, 2006
}}
* {{Cite web
| url = https://www.leonardcohen.com/music/songs-from-a-room
| url-status = live
| archive-url = https://web.archive.org/web/20200919194537/https://www.leonardcohen.com/music/songs-from-a-room
| archive-date = September 19, 2020
| access-date = October 24, 2020
| website = The Official Leonard Cohen Site
| title = Songs from a Room
}}
{{refend}}
==External links==
<!--
Do not add video or other links to potentially copyright infringing media; see [[WP:COPYLINK]]
-->
* {{URL |1=leonardcohen.com |2=The Official Leonard Cohen Site}}<!-- operated by Sony Music Entertainment Canada Inc. -->
* {{URL |1=secondhandsongs.com/work/3798 |2="La complainte du partisan" at SecondHandSongs}} – a source of cover song information
* {{YouTube |hs5hOhI4pEE |Leonard Cohen - The Partisan (Audio)}} – uploaded by LeonardCohenVEVO
* {{YouTube |bZKnxtaVI2g |Les Stentors - La complainte du partisan}} – uploaded by LesstentorsVEVO
* {{YouTube |GEHpYn3sGwk |Emily Loizeau - La complainte du partisan}} – uploaded by EmilyLoizeauVEVO
* {{YouTube |TG_ZEovDDKk |Mick Gordon (feat. Tex Perkins) - The Partisan}} – uploaded by Mick Gordon
* {{YouTube |z9nafv7e1-E |Other Lives - The Partisan (Leonard Cohen cover) <nowiki>[Live at Amoeba]</nowiki>}} – uploaded by [[Amoeba Music]]
* {{YouTube |_KcKOeEwAaQ |The Partisan}} – Joan Baez – ''Come from the Shadows'' album version – provided to YouTube by [[Universal Music Group]]
* {{YouTube |VefiQvgCT8E |The Partisan}} – Electrelane – ''Axes'' album version – provided to YouTube by [[Beggars Group]]
{{Authority control}}
{{Leonard Cohen}}
{{Joan Baez}}
{{DEFAULTSORT:Partisan, The}}
[[Category:1943 songs]]
[[Category:Songs of World War II]]
[[Category:Songs about soldiers]]
[[Category:Songs about the military]]
[[Category:Songs in French]]
[[Category:French folk songs]]
[[Category:French Resistance]]
[[Category:Songs written by Anna Marly]]
[[Category:Songs written by Hy Zaret]]
[[Category:Buffy Sainte-Marie songs]]
[[Category:Leonard Cohen songs]]
[[Category:Joan Baez songs]]
[[Category:Song recordings produced by Bob Johnston]]
[[Category:Anti-fascist music]]
[[Category:CBS Records singles]]
g1tgtyn6watx8wnrri64qexaza5hw72
ಮೋಡ್ಯೂಲ್:Annotated link/doc
828
27123
360858
2025-07-09T19:49:59Z
en>Jonesey95
0
Rm references to Wikidata per [[Wikipedia:Village_pump_(proposals)/Archive_145#RfC:_Populating_article_descriptions_magic_word|RFC]]. Discussed many times on the template talk page.
360858
wikitext
text/x-wiki
{{Module rating|protected}}
{{High-use}}
{{Lua|Module:GetShortDescription|Module:Arguments|Module:Lang}}
<includeonly>{{#ifeq:{{FULLBASEPAGENAME}}|Module:AnnotatedLink|{{important|This module is redundant to [[Module:Annotated link]] which should be used and referred to instead.}}}}</includeonly>
{{info|This module is invoked by {{tlx|annotated link}}.}}
{{info|This module may, by design, output alarming informational messages under certain circumstances; if these messages are displayed on any page invoking this module directly, or via any other module or template using it, the page will be added to [[:Category:Pages displaying alarming messages about Module:Annotated link]].}}
== Usage ==
<pre><nowiki>{{#invoke:Annotated link|main
|name= |display= |quote= |abbr= |abbr_title= |template_link= |aka= |wedge= |dash= |desc_first_letter_case= |space_cat= |prefix_parentheses=
|link_lang= |link_lang_italic= |link_lang_nocat= |link_lang_size= |link_lang_cat= |link_lang_rtl=
|aka_lang= |aka_lang_italic= |aka_lang_nocat= |aka_lang_size= |aka_lang_cat= |aka_lang_rtl=
|wedge_lang= |wedge_lang_italic= |wedge_lang_nocat= |wedge_lang_size= |wedge_lang_cat= |wedge_lang_rtl=
|only= |prefer= |fallback=
|desc_lang_italic= |desc_lang_nocat= |desc_lang_size= |desc_lang_cat= |desc_lang_rtl= |desc_lang_no=
}}</nowiki></pre>
=== name ===
By providing only the '''required''' page name (including namespace), the module will use [[Module:GetShortDescription]] to look for an explicit {{tlx|short description}} in that page, and if not found, will display nothing. If a description is found, it will be appended to a link created for the named page in the style expected for the likes of [[MOS:SEEALSO]]. If no description is found, the link will be created but no extra information will be appended.
Any foreign-language (i.e. not English) text supplied to this module or retrieved by Module:GetShortDescription may be appropriately formatted, in accordance with [[MOS:OTHERLANG]], via the parameters for [[Module:Lang]]; see [[#Foreign language text]] (below).
As this module is responsible for the use of all features of Module:GetShortDescription; all the parameters for that module are available through this module; see [[#Module:GetShortDescription parameters]] (below).
:'''Markup:''' <code><nowiki>{{#invoke:Annotated link|main |name=The Partisan }}</nowiki></code>
:'''Result:''' {{#invoke:Annotated link|main|name=The Partisan}}
This and the following example song titles should be double quoted per [[MOS:POPMUSIC]]; that will be handled by [[#quote]] (below), and you will see the parameters in use where appropriate from here on.
=== display ===
Providing a value for {{para|display}} will format the piped link with a display string:
:'''Markup:''' <code><nowiki>{{#invoke:Annotated link|main |name=Jump (Every Little Thing song) |display=Jump |quote=yes }}</nowiki></code>
:'''Result:''' {{#invoke:Annotated link|main|name=Jump (Every Little Thing song)|display=Jump|quote=yes}}
=== quote ===
Stating {{para|quote|yes}} will double quote the link:
:'''Markup:''' <code><nowiki>{{#invoke:Annotated link|main |name=The Partisan |quote=yes }}</nowiki></code>
:'''Result:''' {{#invoke:Annotated link|main|name=The Partisan|quote=yes}}
:'''Markup:''' <code><nowiki>{{#invoke:Annotated link|main |name=Jump (Every Little Thing song) |display=Jump |quote=yes }}</nowiki></code>
:'''Result:''' {{#invoke:Annotated link|main|name=Jump (Every Little Thing song)|display=Jump|quote=yes}}
=== abbr ===
Providing a value for {{para|abbr}} will append the link with the provided parenthesized abbreviation with {{tag|abbr}} [[semantic markup]]:
:'''Markup:''' <code><nowiki>{{#invoke:Annotated link|main |name=Confédération Mondiale des Activités Subaquatiques |display=World Underwater Federation |abbr=CMAS }}</nowiki></code>
:'''Result:''' {{#invoke:Annotated link|main|name=Confédération Mondiale des Activités Subaquatiques|display=World Underwater Federation|abbr=CMAS}}
An optional {{para|abbr_title}} may be provided:
:'''Markup:''' <code><nowiki>{{#invoke:Annotated link|main |name=Confédération Mondiale des Activités Subaquatiques |display=World Underwater Federation |abbr=CMAS |abbr_title=Confédération Mondiale des Activités Subaquatiques }}</nowiki></code>
:'''Result:''' {{#invoke:Annotated link|main|name=Confédération Mondiale des Activités Subaquatiques|display=World Underwater Federation|abbr=CMAS|abbr_title=Confédération Mondiale des Activités Subaquatiques}}
=== template_link ===
If the linked page is in the [[WP:TEMPLATE|Template]] namespace; the link will be formatted in the manner expected by {{tlx|template link}}:
:'''Markup:''' <code><nowiki>{{#invoke:Annotated link|main |name=Template:Annotated link }}</nowiki></code>
:'''Result:''' {{#invoke:Annotated link|main|name=Template:Annotated link}}
Stating {{para|template_link|code}} will display the link formatted with {{tag|code}}:
:'''Markup:''' <code><nowiki>{{#invoke:Annotated link|main |name=Template:Annotated link |template_link=code }}</nowiki></code>
:'''Result:''' {{#invoke:Annotated link|main|name=Template:Annotated link|template_link=code}}
The previously described parameters – {{para|display}}, {{para|quote}}, {{para|abbr}} and {{para|abbr_title}} – and all foreign language link options under {{para|link_lang}} (see [[#Foreign language text]] (below)) will be ignored if the link is in the Template namespace.
Stating {{para|template_link|no}} will disable this special link formatting and the ignorance of the above-mentioned parameters:
:'''Markup:''' <code><nowiki>{{#invoke:Annotated link|main |name=Template:Annotated link |template_link=no |display=Annotated link }}</nowiki></code>
:'''Result:''' {{#invoke:Annotated link|main|name=Template:Annotated link|template_link=no|display=Annotated link}}
=== aka ===
Providing a value for {{para|aka}} will append the link (and {{para|abbr}} if provided) with a useful alternative name:
:'''Markup:''' <code><nowiki>{{#invoke:Annotated link|main |name=The Partisan |quote=yes |aka=La Complainte du partisan }}</nowiki></code>
:'''Result:''' {{#invoke:Annotated link|main|name=The Partisan|quote=yes|aka=La Complainte du partisan}}
:'''Markup:''' <code><nowiki>{{#invoke:Annotated link|main |name=Confédération Mondiale des Activités Subaquatiques |display=World Underwater Federation |abbr=CMAS |aka=Confédération Mondiale des Activités Subaquatiques }}</nowiki></code>
:'''Result:''' {{#invoke:Annotated link|main|name=Confédération Mondiale des Activités Subaquatiques|display=World Underwater Federation|abbr=CMAS|aka=Confédération Mondiale des Activités Subaquatiques}}
These and some following examples contain foreign language text that, per [[MOS:OTHERLANG]], should be appropriately displayed and declared via [[HTML]] markup as being of that language; this will be handled by various parameters; see [[#Foreign language text]] (below) for full details, and you will see the parameters in use where appropriate from here on.
=== wedge ===
Providing a value for {{para|wedge}} will append the link (and {{para|abbr}} and {{para|aka}} in that order if either or both is provided) with any extra details felt suitable:
:'''Markup:''' <code><nowiki>{{#invoke:Annotated link|main |name=The Partisan |quote=yes |wedge=from the album ''[[Songs from a Room]]'' |aka=La Complainte du partisan |aka_lang=fr }}</nowiki></code>
:'''Result:''' {{#invoke:Annotated link|main|name=The Partisan|quote=yes|wedge=from the album ''[[Songs from a Room]]''|aka=La Complainte du partisan|aka_lang=fr}}
For complementary foreign language params; see [[#Foreign language text]] (below).
=== dash ===
For list consistency, per [[MOS:LISTFORMAT]]; by providing a value for {{para|dash}}; the dash between the short description and the preceding text may be exchanged for a suitable alternative:
:'''Markup:''' <code><nowiki>{{#invoke:Annotated link|main |name=The Partisan |quote=yes |dash=, }}</nowiki></code>
:'''Result:''' {{#invoke:Annotated link|main|name=The Partisan|quote=yes|dash=,}}
=== desc_first_letter_case ===
Short descriptions on en Wikipedia [[WP:SDFORMAT|should be formatted]] with an uppercase first letter, but the typical application of this module will require the first character to be lowercase. By default; this module will ensure all the short descriptions retrieved by Module:GetShortDescription are transformed to start with a lowercase first letter, but this may be overridden if required using {{para|desc_first_letter_case|upper}} or {{para|desc_first_letter_case|lower}}.
=== prefix_parentheses ===
Sometimes date ranges in short descriptions are included in a suffixed parenthetical, per [[WP:SDDATES]] e.g. for [[Jimmy Wales]]: "Co-founder of Wikipedia (born 1966)".
However when listing people in disambiguation pages per [[MOS:DABPEOPLE]], birth and death dates in parentheticals should precede the comma, as in "[[Jimmy Wales]] (born 1966), co-founder of Wikipedia".
If the optional parameter {{para|prefix_parentheses|y}} is provided, this behavior will be performed, so any suffixed parenthetical text will be moved to before the dash (or comma) separator.
Note that current consensus is to not use {{tl|annotated link}} for disambiguation pages; see [[Template:Annotated link/doc#Usage]].
=== space_cat ===
In the event that a short description with no spaces is retrieved and displayed; pages transcluding the annotation will be added to [[:Category:Pages displaying short descriptions with no spaces via Module:Annotated link]] for interested editors to monitor for potential issues. Potential issues might include: garbage keyboard mashings, a typo of "none" while attempting to disable an explicit {{tlc|short description}} or some misunderstanding on the part of an editor placing one.
If the transclusion on a page in this category is checked and it is determined to be okay; stating a value for {{para|space_cat}} in the invocation will disable the categorisation. This should only be done on a case by cases basis, as opposed to as a default, or no potentially inappropriate annotations will be categorised; i.e. allow this parameter to be set in individual transclusions of templates which invoke this module, like {{tlx|annotated link}}, rather than in the template code.
=== Module:GetShortDescription parameters ===
{{main|Module:GetShortDescription/doc}}
The value provided with {{para|name}} is passed through this module to Module:GetShortDescription where it is also '''required'''; the expectations of this module are described in [[#name]] (above). Module:GetShortDescription uses the
value to find a {{tlx|short description}} in the named page, or various alternatives depending on parameter values.
==== only ====
Providing a value for {{para|only}} will limit the search to being only for the stated description. If no description is found, the result will be an empty string, unless a fallback is provided; see [[#fallback]] (below).
:Stating {{para|only|explicit}} will limit the search to only short descriptions set by use of {{tlc|short description}} on the searched page.
==== prefer ====
Providing a value for {{para|prefer}} will initiate the search for the stated description, but try for the alternative if none is found. If no description is found, the result will be an empty string, unless a fallback is provided; see [[#fallback]] (below).
:State {{para|prefer|explicit}} to use the explicit short description if available.
==== fallback ====
If a {{para|fallback}} value is provided, and no description is found by the expressed route, the appended description will be the stated fallback value.
==== link_lang ====
If the link text is of a foreign language (again; editor discretion); control the formatting with: {{para|link_lang|<language code>}}, {{para|link_lang_italic}}, {{para|link_lang_nocat}}, {{para|link_lang_size}}, {{para|link_lang_cat}} and {{para|link_lang_rtl}}
==== aka_lang ====
If the {{para|aka}} text is of a foreign language (again; editor discretion); control the formatting with: {{para|aka_lang|<language code>}}, {{para|aka_lang_italic}}, {{para|aka_lang_nocat}}, {{para|aka_lang_size}}, {{para|aka_lang_cat}}, {{para|aka_lang_rtl}}
==== wedge_lang ====
If the {{para|wedge}} text is of a foreign language (again; editor discretion); control the formatting with: {{para|wedge_lang|<language code>}}, {{para|wedge_lang_italic}}, {{para|wedge_lang_nocat}}, {{para|wedge_lang_size}}, {{para|wedge_lang_cat}}, {{para|wedge_lang_rtl}}
<includeonly>{{Sandbox other||
<!-- Categories below this line; interwikis at Wikidata -->
[[Category:Short description related modules]]
[[Category:Link modules]]
}}</includeonly>
<noinclude>
[[Category:Module documentation pages]]
</noinclude>
5ga1wb9jcp703o6sorkx0e0avhbtv3a
360859
360858
2026-05-18T04:58:23Z
ChiK
1136
೧ revisions imported from [[:en:Module:Annotated_link/doc]]
360858
wikitext
text/x-wiki
{{Module rating|protected}}
{{High-use}}
{{Lua|Module:GetShortDescription|Module:Arguments|Module:Lang}}
<includeonly>{{#ifeq:{{FULLBASEPAGENAME}}|Module:AnnotatedLink|{{important|This module is redundant to [[Module:Annotated link]] which should be used and referred to instead.}}}}</includeonly>
{{info|This module is invoked by {{tlx|annotated link}}.}}
{{info|This module may, by design, output alarming informational messages under certain circumstances; if these messages are displayed on any page invoking this module directly, or via any other module or template using it, the page will be added to [[:Category:Pages displaying alarming messages about Module:Annotated link]].}}
== Usage ==
<pre><nowiki>{{#invoke:Annotated link|main
|name= |display= |quote= |abbr= |abbr_title= |template_link= |aka= |wedge= |dash= |desc_first_letter_case= |space_cat= |prefix_parentheses=
|link_lang= |link_lang_italic= |link_lang_nocat= |link_lang_size= |link_lang_cat= |link_lang_rtl=
|aka_lang= |aka_lang_italic= |aka_lang_nocat= |aka_lang_size= |aka_lang_cat= |aka_lang_rtl=
|wedge_lang= |wedge_lang_italic= |wedge_lang_nocat= |wedge_lang_size= |wedge_lang_cat= |wedge_lang_rtl=
|only= |prefer= |fallback=
|desc_lang_italic= |desc_lang_nocat= |desc_lang_size= |desc_lang_cat= |desc_lang_rtl= |desc_lang_no=
}}</nowiki></pre>
=== name ===
By providing only the '''required''' page name (including namespace), the module will use [[Module:GetShortDescription]] to look for an explicit {{tlx|short description}} in that page, and if not found, will display nothing. If a description is found, it will be appended to a link created for the named page in the style expected for the likes of [[MOS:SEEALSO]]. If no description is found, the link will be created but no extra information will be appended.
Any foreign-language (i.e. not English) text supplied to this module or retrieved by Module:GetShortDescription may be appropriately formatted, in accordance with [[MOS:OTHERLANG]], via the parameters for [[Module:Lang]]; see [[#Foreign language text]] (below).
As this module is responsible for the use of all features of Module:GetShortDescription; all the parameters for that module are available through this module; see [[#Module:GetShortDescription parameters]] (below).
:'''Markup:''' <code><nowiki>{{#invoke:Annotated link|main |name=The Partisan }}</nowiki></code>
:'''Result:''' {{#invoke:Annotated link|main|name=The Partisan}}
This and the following example song titles should be double quoted per [[MOS:POPMUSIC]]; that will be handled by [[#quote]] (below), and you will see the parameters in use where appropriate from here on.
=== display ===
Providing a value for {{para|display}} will format the piped link with a display string:
:'''Markup:''' <code><nowiki>{{#invoke:Annotated link|main |name=Jump (Every Little Thing song) |display=Jump |quote=yes }}</nowiki></code>
:'''Result:''' {{#invoke:Annotated link|main|name=Jump (Every Little Thing song)|display=Jump|quote=yes}}
=== quote ===
Stating {{para|quote|yes}} will double quote the link:
:'''Markup:''' <code><nowiki>{{#invoke:Annotated link|main |name=The Partisan |quote=yes }}</nowiki></code>
:'''Result:''' {{#invoke:Annotated link|main|name=The Partisan|quote=yes}}
:'''Markup:''' <code><nowiki>{{#invoke:Annotated link|main |name=Jump (Every Little Thing song) |display=Jump |quote=yes }}</nowiki></code>
:'''Result:''' {{#invoke:Annotated link|main|name=Jump (Every Little Thing song)|display=Jump|quote=yes}}
=== abbr ===
Providing a value for {{para|abbr}} will append the link with the provided parenthesized abbreviation with {{tag|abbr}} [[semantic markup]]:
:'''Markup:''' <code><nowiki>{{#invoke:Annotated link|main |name=Confédération Mondiale des Activités Subaquatiques |display=World Underwater Federation |abbr=CMAS }}</nowiki></code>
:'''Result:''' {{#invoke:Annotated link|main|name=Confédération Mondiale des Activités Subaquatiques|display=World Underwater Federation|abbr=CMAS}}
An optional {{para|abbr_title}} may be provided:
:'''Markup:''' <code><nowiki>{{#invoke:Annotated link|main |name=Confédération Mondiale des Activités Subaquatiques |display=World Underwater Federation |abbr=CMAS |abbr_title=Confédération Mondiale des Activités Subaquatiques }}</nowiki></code>
:'''Result:''' {{#invoke:Annotated link|main|name=Confédération Mondiale des Activités Subaquatiques|display=World Underwater Federation|abbr=CMAS|abbr_title=Confédération Mondiale des Activités Subaquatiques}}
=== template_link ===
If the linked page is in the [[WP:TEMPLATE|Template]] namespace; the link will be formatted in the manner expected by {{tlx|template link}}:
:'''Markup:''' <code><nowiki>{{#invoke:Annotated link|main |name=Template:Annotated link }}</nowiki></code>
:'''Result:''' {{#invoke:Annotated link|main|name=Template:Annotated link}}
Stating {{para|template_link|code}} will display the link formatted with {{tag|code}}:
:'''Markup:''' <code><nowiki>{{#invoke:Annotated link|main |name=Template:Annotated link |template_link=code }}</nowiki></code>
:'''Result:''' {{#invoke:Annotated link|main|name=Template:Annotated link|template_link=code}}
The previously described parameters – {{para|display}}, {{para|quote}}, {{para|abbr}} and {{para|abbr_title}} – and all foreign language link options under {{para|link_lang}} (see [[#Foreign language text]] (below)) will be ignored if the link is in the Template namespace.
Stating {{para|template_link|no}} will disable this special link formatting and the ignorance of the above-mentioned parameters:
:'''Markup:''' <code><nowiki>{{#invoke:Annotated link|main |name=Template:Annotated link |template_link=no |display=Annotated link }}</nowiki></code>
:'''Result:''' {{#invoke:Annotated link|main|name=Template:Annotated link|template_link=no|display=Annotated link}}
=== aka ===
Providing a value for {{para|aka}} will append the link (and {{para|abbr}} if provided) with a useful alternative name:
:'''Markup:''' <code><nowiki>{{#invoke:Annotated link|main |name=The Partisan |quote=yes |aka=La Complainte du partisan }}</nowiki></code>
:'''Result:''' {{#invoke:Annotated link|main|name=The Partisan|quote=yes|aka=La Complainte du partisan}}
:'''Markup:''' <code><nowiki>{{#invoke:Annotated link|main |name=Confédération Mondiale des Activités Subaquatiques |display=World Underwater Federation |abbr=CMAS |aka=Confédération Mondiale des Activités Subaquatiques }}</nowiki></code>
:'''Result:''' {{#invoke:Annotated link|main|name=Confédération Mondiale des Activités Subaquatiques|display=World Underwater Federation|abbr=CMAS|aka=Confédération Mondiale des Activités Subaquatiques}}
These and some following examples contain foreign language text that, per [[MOS:OTHERLANG]], should be appropriately displayed and declared via [[HTML]] markup as being of that language; this will be handled by various parameters; see [[#Foreign language text]] (below) for full details, and you will see the parameters in use where appropriate from here on.
=== wedge ===
Providing a value for {{para|wedge}} will append the link (and {{para|abbr}} and {{para|aka}} in that order if either or both is provided) with any extra details felt suitable:
:'''Markup:''' <code><nowiki>{{#invoke:Annotated link|main |name=The Partisan |quote=yes |wedge=from the album ''[[Songs from a Room]]'' |aka=La Complainte du partisan |aka_lang=fr }}</nowiki></code>
:'''Result:''' {{#invoke:Annotated link|main|name=The Partisan|quote=yes|wedge=from the album ''[[Songs from a Room]]''|aka=La Complainte du partisan|aka_lang=fr}}
For complementary foreign language params; see [[#Foreign language text]] (below).
=== dash ===
For list consistency, per [[MOS:LISTFORMAT]]; by providing a value for {{para|dash}}; the dash between the short description and the preceding text may be exchanged for a suitable alternative:
:'''Markup:''' <code><nowiki>{{#invoke:Annotated link|main |name=The Partisan |quote=yes |dash=, }}</nowiki></code>
:'''Result:''' {{#invoke:Annotated link|main|name=The Partisan|quote=yes|dash=,}}
=== desc_first_letter_case ===
Short descriptions on en Wikipedia [[WP:SDFORMAT|should be formatted]] with an uppercase first letter, but the typical application of this module will require the first character to be lowercase. By default; this module will ensure all the short descriptions retrieved by Module:GetShortDescription are transformed to start with a lowercase first letter, but this may be overridden if required using {{para|desc_first_letter_case|upper}} or {{para|desc_first_letter_case|lower}}.
=== prefix_parentheses ===
Sometimes date ranges in short descriptions are included in a suffixed parenthetical, per [[WP:SDDATES]] e.g. for [[Jimmy Wales]]: "Co-founder of Wikipedia (born 1966)".
However when listing people in disambiguation pages per [[MOS:DABPEOPLE]], birth and death dates in parentheticals should precede the comma, as in "[[Jimmy Wales]] (born 1966), co-founder of Wikipedia".
If the optional parameter {{para|prefix_parentheses|y}} is provided, this behavior will be performed, so any suffixed parenthetical text will be moved to before the dash (or comma) separator.
Note that current consensus is to not use {{tl|annotated link}} for disambiguation pages; see [[Template:Annotated link/doc#Usage]].
=== space_cat ===
In the event that a short description with no spaces is retrieved and displayed; pages transcluding the annotation will be added to [[:Category:Pages displaying short descriptions with no spaces via Module:Annotated link]] for interested editors to monitor for potential issues. Potential issues might include: garbage keyboard mashings, a typo of "none" while attempting to disable an explicit {{tlc|short description}} or some misunderstanding on the part of an editor placing one.
If the transclusion on a page in this category is checked and it is determined to be okay; stating a value for {{para|space_cat}} in the invocation will disable the categorisation. This should only be done on a case by cases basis, as opposed to as a default, or no potentially inappropriate annotations will be categorised; i.e. allow this parameter to be set in individual transclusions of templates which invoke this module, like {{tlx|annotated link}}, rather than in the template code.
=== Module:GetShortDescription parameters ===
{{main|Module:GetShortDescription/doc}}
The value provided with {{para|name}} is passed through this module to Module:GetShortDescription where it is also '''required'''; the expectations of this module are described in [[#name]] (above). Module:GetShortDescription uses the
value to find a {{tlx|short description}} in the named page, or various alternatives depending on parameter values.
==== only ====
Providing a value for {{para|only}} will limit the search to being only for the stated description. If no description is found, the result will be an empty string, unless a fallback is provided; see [[#fallback]] (below).
:Stating {{para|only|explicit}} will limit the search to only short descriptions set by use of {{tlc|short description}} on the searched page.
==== prefer ====
Providing a value for {{para|prefer}} will initiate the search for the stated description, but try for the alternative if none is found. If no description is found, the result will be an empty string, unless a fallback is provided; see [[#fallback]] (below).
:State {{para|prefer|explicit}} to use the explicit short description if available.
==== fallback ====
If a {{para|fallback}} value is provided, and no description is found by the expressed route, the appended description will be the stated fallback value.
==== link_lang ====
If the link text is of a foreign language (again; editor discretion); control the formatting with: {{para|link_lang|<language code>}}, {{para|link_lang_italic}}, {{para|link_lang_nocat}}, {{para|link_lang_size}}, {{para|link_lang_cat}} and {{para|link_lang_rtl}}
==== aka_lang ====
If the {{para|aka}} text is of a foreign language (again; editor discretion); control the formatting with: {{para|aka_lang|<language code>}}, {{para|aka_lang_italic}}, {{para|aka_lang_nocat}}, {{para|aka_lang_size}}, {{para|aka_lang_cat}}, {{para|aka_lang_rtl}}
==== wedge_lang ====
If the {{para|wedge}} text is of a foreign language (again; editor discretion); control the formatting with: {{para|wedge_lang|<language code>}}, {{para|wedge_lang_italic}}, {{para|wedge_lang_nocat}}, {{para|wedge_lang_size}}, {{para|wedge_lang_cat}}, {{para|wedge_lang_rtl}}
<includeonly>{{Sandbox other||
<!-- Categories below this line; interwikis at Wikidata -->
[[Category:Short description related modules]]
[[Category:Link modules]]
}}</includeonly>
<noinclude>
[[Category:Module documentation pages]]
</noinclude>
5ga1wb9jcp703o6sorkx0e0avhbtv3a
ಮೋಡ್ಯೂಲ್ ಪಾತೆರ:Annotated link
829
27124
360860
2026-05-17T20:39:01Z
en>Sdkb
0
Added {{[[:Template:R from remote talk page|R from remote talk page]]}} tag to redirect
360860
wikitext
text/x-wiki
#REDIRECT [[Template talk:Annotated link]]
{{Redirect category shell|
{{R from remote talk page}}
}}
2bob9a5yq1tpbaphkooxkgfan8w3z9u
360861
360860
2026-05-18T04:58:23Z
ChiK
1136
೧ revisions imported from [[:en:Module_talk:Annotated_link]]
360860
wikitext
text/x-wiki
#REDIRECT [[Template talk:Annotated link]]
{{Redirect category shell|
{{R from remote talk page}}
}}
2bob9a5yq1tpbaphkooxkgfan8w3z9u