Jump to content

Template talk:Lang/Archive 4

Page contents not supported in other languages.
From Wikipedia, the free encyclopedia
Archive 1Archive 2Archive 3Archive 4Archive 5Archive 6Archive 10

-Latn stuff

So, how are we going to move forward for things like {{lang-lo-Latn}}. Do we just start creating these templates (and if so, with what calls to the module?), or do we want to use {{lang-lo}} and pass a parameter to it, or ...? I may have missed some prior discussion on this, but so much has been going on I wanted to explicitly ask about this before taking any action.  — SMcCandlish ¢ >ʌⱷ҅ʌ<  16:32, 13 December 2017 (UTC)

This topic hasn't been discussed. Were it up to me, I would say: don't fork {{lang-lo}}{{lang-lo-Latn}}. In the old days you would have had to fork but now, there is |script=Latn so use that.
Additionally, I think that by using the parameter we can think about a bot task to rewrite instances of templates like {{lang-sr-Cyrl}} and {{lang-sr-Latn}} to use {{lang-sr|script=<script>}} and then delete {{lang-sr-Cyrl}} and {{lang-sr-Latn}}.
Trappist the monk (talk) 11:44, 14 December 2017 (UTC)
Quick test cases:
  • {{lang|lo|script=Latn|fu}} → [fu] Error: {{Lang}}: invalid parameter: |script= (help)
  • {{lang-lo|script=Latn|fu}}Lao: fu
  • {{lang|es|casa}}casa
  • {{lang-es|casa}}Spanish: casa
The {{lang-xx}} output is inconsistent. If we're going to italicize by default in that template family, that needs to apply to |script=Latn output or people are going to get confused, and we'll have inconsistent results in our output. There is no use case for Latn script output being non-italic where the same output in a Latin-script language would be italicized, or vice versa. The only variance of any kind I'm aware of is that, per MOS:TITLES, the title of a work that should be italicized is italicized in Greek and Cyrillic (and by extension other alphabets close to Latin) but not in CJK (nor by extension others that have no relationship to Western letterforms, e.g. Arabic and various Indian languages); and that's a manual case-by-case tweak, not something the template needs to "know" about.

Given the amount of |script=Latn I intend to use, now that we have that feature, having to also manually italicize would be seriously onerous.
 — SMcCandlish ¢ >ʌⱷ҅ʌ<  17:09, 19 December 2017 (UTC)

It all goes back to the presumed 'default' states doesn't it? {{lang-??}} templates default to italic rendering unless that condition is overridden by |italic=no. In your example, {{lang-lo}} defaults to italic because it's a {{lang-??}} template but that is overridden with |italic=no because that was the template's state when I converted it to use Module:lang.
When there are competing and possibly contradictory parameters as in your example, {{lang-lo|script=Latn|fu}}, one must prevail or there must be an error message. I chose |italic= to be the winner when competing with |script=Latn (because fu might be a proper name – which was what started all of this). To make your example work, you must write:
{{lang-lo|italic=yes|script=Latn|fu}}Lao: fu
I think that all of this is documented at Template:Lang-lo#Parameters.
Trappist the monk (talk) 17:54, 19 December 2017 (UTC)
I understand that's what's happening now; it's just undesirable, because 99% of the time it's not going to be a proper name and we will want the italics, for any language if we emit Latn. It's already a hassle – but one we're used to – that {{lang|de}}, etc., don't italicize while {{lang-de}}, etc., do when in Latin-based scripts. It gets into "this is so confusing I want to shoot someone" when it veers back in the other direction and doesn't italicize when |script=Latn. It's re-inspire the original idea of creating {{lang-foo-Latn}} templates that emit the expected italics that are consistent with {{lang-de}}, etc., etc.

Another way of putting it, for a class of templates that does italicize, the only logical output for |script=Latn is the italics, for the same reason as the original italicization. For such a template group, |script=Latn implies italics, rendering |script=Latn|italics=yes redundant and a waste of time. Or in other words, {{lang-de}} essentially is {{lang-de|script=Latn}} and {{lang-de|script=Latn|italics=yes}}, simultaneously (conceptually speaking).

This is most especially problematic in in the {{lang-xx}} case, because we cannot do either of the obvious wikimarkup things: both ''{{langx|lo|script=Latn|fu}}'' and {{langx|lo|script=Latn|''fu''}} will fail (for different reasons). If there's a way to make the latter case stop failing that might be good, too, though it has the benefit of preventing people wrongly italicizing non-Latin-based scripts with {{langx|lo|''[whatever the character is]''}}.

I'm not trying to have a sport argument or philosophical debate with you. I'm super-impressed by all the work so far, but am begging you to fix this one issue, because having to deal with it, as-is, may waste untold of person-hours for many editors over the long haul: manually adding |italic=yes= a zillion times, and using searches to find a zillion cases where people left it out and then going and fixing them (again and again and again), and writing bots to do it, and arguing with people confused by the docs, and etc. If you're telling me this can only be addressed at the language-specific template level, then that's very depressing, but it sounds like its not ("I chose |italic= to be the winner ...").

Aside: In the case of don't-italicize-a-proper-name, we'd want {{lang-lo|script=Latn|italic=no|Fu}}, and this would be very, very rare because we generally don't use lang markup around proper names except for titles of works sometimes, and when using a place or personal name in a words-as-words manner, e.g. a cross-language comparison like "Munich (German: München)" – both cases that usually call for italics. Virtually all Latn cases will need the italics. When referring to a Laotian named Fu, we'd just use Fu, without markup at all (or most of us would – there's no policy about it or anything; maybe it will become more common, but I doubt it).
 — SMcCandlish ¢ >ʌⱷ҅ʌ<  23:32, 20 December 2017 (UTC)

An important reason for the existence of these templates is that which is unseen. The templates make for correct html so that your browser or your screen reader does the right thing. You should not rely on |script=Latn as a guaranteed way of rendering text in italics. There are 90 language codes in the IANA subtag registry that expressly include Suppress-Script: Latn – there are 44 other languages that suppress other scripts. One of those things yet to be done is to add support to the module so that we can detect de-Latn so that we don't write <span lang=de-Latn>...</span> – we write that now but shouldn't. And an oh-by-the-way: |script= isn't supported by {{lang}} because you can add the script subtag directly to the language code in the template call, something that you can't do with the matching {{lang-??}} template.
Pretty much the last thing that I want to do is break every existing {{lang-??}} template – that's multiple hundreds of thousands of articles. I'm actually astonished that the count of articles in Category:Lang and lang-xx template errors only just peeked over 10,000 after I finished converting most of the 600+ {{lang-??}} templates to use the module. When I did that, in most cases I set |italic= only when the wikitext version of the template did not italicize {{{1}}}. The notion that 'all' {{lang-??}} templates rendered in italic is largely false; a lot of them did/do, a lot of them didn't/don't. But, right now, the vast majority of {{lang-??}} templates are rendering just as they were before the change.
I confess, for all of these words, perhaps I'm losing the plot. If you are expecting that all {{lang-??}} templates act exactly the same way, they don't because they never did. I do wonder if we might create an |initial-italic-state= parameter that might be used where we now use |italic= in the {{lang-??}} templates' {{#invoke:}}. This new parameter would set the template's 'default' italic rather than have the module assume that all {{lang-??}} templates are the same and so have the same 'default'. If we did that, for those language codes that permit |script=Latn, it would not be necessary to write {{langx|lo|script=Latn|italic=yes}}. |initial-italic-state= would be a required parameter in every {{lang-??}} template so that we can replace the current module's global italic setting. {{lang}} would not be changed.
Another way might be to have the templates that aren't italicized call a different initial function in the module so {{#invoke:Lang|lang_xx_normal}} where the lang_xx_normal() function sets initial_italic='no'. This is probably better because it will likely be easier to implement. Or not.
There will still be the issue of |script=Latn competing with |italic=no. I still choose to have |italic= win. Were we wanting to write, say, the Arabic name for a certain recalcitrant mountain using Latin script, we would have to write:
{{langx|ar|Mohamed's Mountain|script=Latn|italic=no}}
We require |script=Latn because we use it to make the correct lang=ar-Latn attribute and to turn off right-to-left support. Because |script=Latn is stronger than initial_italic_state=no, italics would be applied. But, because Mohamed's Mountain is a proper name that should not be rendered in italic font, we require |italic=no which must be stronger than |script=Latn.
Trappist the monk (talk) 01:38, 21 December 2017 (UTC)
I have implemented the second of my two ideas in Module:lang/sandbox, created {{lang-lo/sandbox}}, and tweaked {{lang-es/sandbox}} to test. Results in my sandbox.
{{lang-lo/sandbox}} specifies an initial font-style:normal because it calls lang_xx_normal(). That style can be overridden by |script=Latn without the need to also set |italic=yes:
{{langx|lo|fu|script=latn}}Lao: fu
{{lang-lo/sandbox|fu|script=latn}}Lao: fu
Trappist the monk (talk) 12:41, 21 December 2017 (UTC)
No time right now (work calls), but {{langx|ar|Mohamed's Mountain|script=Latn|italic=no}} is not what -Latn is for. 'Mohamed's Mountain' is a gloss, not a Latin transliteration of or encoding of Arabic. That would be [ǧbl mḥmd] Error: {{Lang}}: invalid parameter: |script= (help) (among many other approaches for latinizing/romanizing Arabic), for Arabic script جبل محمد. Maybe there are {{lang-xx}} templates for language that usually/always use a Latin-based script and which are not italicizing; most of them do, so this is an inconsistency problem to fix, not an excuse for us to make things even more confusing.  — SMcCandlish ¢ >ʌⱷ҅ʌ<  21:57, 21 December 2017 (UTC)
You know, sometimes I wonder that people can communicate at all. The Mohamed's Mountain example was merely an illustration. I did write the Arabic name assuming, more fool I, that it is understood to be a placeholder and not an accurate transliteration of actual Arabic. The purpose of the illustration is to show that for proper names transliterated into Latin script, we require:
  1. |script=Latn
    1. so that the html lang=ar-Latn attribute is correct
    2. so that the html dir=rtl attribute, normally associated with code ar is properly omitted
  2. |italic=no
    1. to undo the automatic italic font style set by |script=latn
Trappist the monk (talk) 22:32, 21 December 2017 (UTC)
Ah, okay. Well, I had been on my way out the door to catch a train, so maybe I didn't read that carefully enough. Anyway, the lack of consistent behavior is the issue, nothing more. I'm not making any kind of philosophical point, or even a preferences one (why were {{lang|xx}} and {{lang-xx}} ever doing something different, italics-wise, for the same language encoding in the first place? Doing either italics or no italics predictably would be preferable, whichever default people want it to be; doing the italics when the script is Latin-based [usually or via -Latn] would be the most practical, since most uses do need to be italicized – that's a "don't waste editors' time assessment, nothing more). Maybe we just need to have an RfC to normalize it all after the re-coding dust settles.  — SMcCandlish ¢ >ʌⱷ҅ʌ<  16:51, 23 December 2017 (UTC)
doing the italics when the script is Latin-based [usually or via -Latn] would be the most practical is what most of the {{lang-??}} templates do now – languages that are written in multiple scripts are problematic: which script do you choose as the 'default'? Fortunately for me, someone else has already taken the trouble to make those decisions so all that I have done is to continue to use the default that that someone chose.
Making {{lang}} do the same thing is difficult for a couple of reasons: it has always rendered in normal font style so where italic rendering is required, italic wiki markup is applied either inside (where the template can detect it) or outside (where the template cannot detect it). We would need to create some sort of mechanism to know from the language code (a big-damn table listing all language codes that are to default render in Latin script – yuck), or a mechanism to read the content of {{{2}}} and make a decision from that – is all text in {{{2}}}, or all of the text in the display portion of a wikilink, Latin script? We might crib something from Module:Language/scripts (isLatn() looks promising). We should also make sure that the is_latn() test (I hate camelCase) doesn't fail on punctuation because some languages use rather a lot of it: Yavapai: Wi:kaʼi:la. This latter doesn't, of course solve the problem of the tradition that {{lang}} never automatically italicizes its content.
Trappist the monk (talk) 17:52, 23 December 2017 (UTC)
I have moved the weaker-initial-style code to the live module and have an AWB script that I am using to revise the individual {{lang-??}} templates; 50 done, 550ish to go.
Trappist the monk (talk) 20:41, 23 December 2017 (UTC)
In the sandbox is an experiment that auto-italicizes when {{{2}}} holds only Latn script. Latn script, for the purposes of this new function, are those characters specified in these Unicode code charts:
C0 Controls and Basic Latin U+0020–U+007E
C1 Controls and Latin-1 Supplement U+00A0-U+00AC, U+00C0–U+00FF
Latin Extended-A U+0100–U+017F
Latin Extended-B U+0180–U+024F
Latin Extended Additional U+1E00-U+1EFF
Latin Extended-C U+2C60–U+2C7F
Latin Extended-D U+A720-U+A7FF
Latin Extended-E U+AB30-U+AB6F
Alphabetic Presentaion Forms U+FB00-U+FB06
Halfwidth and Fullwidth Forms U+FF01-U+FF3C
This code only applies to {{lang/sandbox}}
italicizes Latn text:
{{lang/sandbox|el|List of leaders of North Korea}}List of leaders of North Korea
except when {{{1}}} is en or eng:
{{lang/sandbox|en|List of leaders of North Korea}}List of leaders of North Korea
does not italicize non-Latin text:
{{lang/sandbox|el|Ανώτατος Ηγέτης της Βόρειας Κορέας}}Ανώτατος Ηγέτης της Βόρειας Κορέας
does not italicize mixed scripts:
{{lang/sandbox|el|List of leaders of Βόρειας Κορέας}}List of leaders of Βόρειας Κορέας
allows interwiki links to non-Latn Wikipedias:
{{lang/sandbox|el|[[el:Ανώτατος Ηγέτης της Βόρειας Κορέας|List of leaders of North Korea]]}}List of leaders of North Korea
I don't know if this should be kept or not. Automation is handy but contributes to laziness and complacency and that impacts the quality of the encyclopedia. I have fixed too many cs1|2 templates that were created by automated tools to believe that automation fosters quality.
Trappist the monk (talk) 18:10, 26 December 2017 (UTC)
Support. It seems that {{lang/sandbox}} retains outside and inside italics (''{{lang/sandbox|de|Der Ring des Nibelungen}}''Der Ring des Nibelungen and {{lang/sandbox|de|''Der Ring des Nibelungen''}} → [Der Ring des Nibelungen] Error: {{Lang}}: text has italic markup (help)) which addresses my earlier concerns at #More questions on italics. -- Michael Bednarek (talk) 01:03, 27 December 2017 (UTC)
{{lang/sandbox}} ignores both inner and outer italic markup just as {{lang}} does. The difference is that {{lang/sandbox}} detects the text 'Der Ring des Nibelungen' as German written with characters from the Unicode Latin code set so it switches from font-style:normal to font-style:italic.
Trappist the monk (talk) 10:26, 27 December 2017 (UTC)
So the italic output of my example has nothing to do with the Wikitext italic markings I used? Let's see: "{{lang/sandbox|de|Der Ring des Nibelungen}}Der Ring des Nibelungen" – indeed. Hmm, so what happens if I want to use "München" without italics? "{{Lang/sandbox|de|München}}München" (unbidden italics) versus "{{Lang|de|München}}München" (no italics). Baffled, Michael Bednarek (talk) 14:49, 27 December 2017 (UTC)
Baffled? Really? 'München' is a word constructed from characters that are members of the Unicode Latin code sets. {{lang/sandbox}} sees that and applies italic styling; {{lang}} is blind to the construction of the text that it wraps. Neither template is able to 'read' the text that it wraps and make decisions based on that reading. If they could, then Der Ring des Nibelungen would be italicized because it is a title; München would not because it is a name; neither determination relying on the alphabet in use. We could, I suppose, toss a couple more parameters onto the pile: |title= would italicize text for all languages except for CJK; |name= would render text in upright font regardless of |script= but would yield to |italic=. Don't hold your breath for these.
Trappist the monk (talk) 15:27, 27 December 2017 (UTC)
Except the sandbox isn't applying language tags when surrounded by italics:
''{{lang/sandbox|de|Der Ring des Nibelungen}}''Der Ring des Nibelungen
<i>Der Ring des Nibelungen</i>
with no lang="de" or xml:lang="de" being output, whereas
{{lang/sandbox|de|''Der Ring des Nibelungen''}} → [Der Ring des Nibelungen] Error: {{Lang}}: text has italic markup (help)
<i lang="de" xml:lang="de">Der Ring des Nibelungen</i>
correctly outputting the lang="de"OwenBlacker (talk; please {{ping}} me in replies) 13:23, 28 December 2017 (UTC)
Good catch, that. The module outputs the correct thing:
''<span title="German-language text"><i lang="de">Der Ring des Nibelungen</i></span>''
MediaWiki does whatever it does to convert the enclosing italic wiki markup to <i>...</i> which give this:
<i><span title="German-language text"><i lang="de">Der Ring des Nibelungen</i></span></i>
I speculate that as part of MediaWiki's cleanup, some bit of code sees the nested <i><i>...</i></i> and removes the inner pair leaving
<i>Der Ring des Nibelungen</i>
I think that this means that we must always use a <span>...</span> tag for the lang= and size= attributes and wrap that in <i>...</i> when italics are required. I'll make the necessary change sometime today. This issue should probably be pursued at phabricator but I'll leave that to a later date or to someone else. Our use of <i>...</i> here appears to me to be in compliance with html5.
Trappist the monk (talk) 14:28, 28 December 2017 (UTC)
Fixed, I think. Module output is:
''<span title="German-language text"><i lang="de">Der Ring des Nibelungen</i></span>''
which MediaWiki converts to:
<i><span title="German-language text"><i lang="de">Der Ring des Nibelungen</i></span></i>
and which cleans up as
<span title="German-language text"><i lang="de">Der Ring des Nibelungen</i></span>
Trappist the monk (talk) 15:59, 28 December 2017 (UTC)

Gelobet seist du, Jesu Christ, BWV 91

I am sorry, I don't have time to check if my question was answered already and how? I returned after Christmas and looked at its cantatas, including Gelobet seist du, Jesu Christ, BWV 91, and saw to my irritation that the lang-template somehow was changed, and the title doesn't show properly any more. This concerns thousands of my edits. Tell me that it's only a bad dream please. --Gerda Arendt (talk) 18:09, 27 December 2017 (UTC)

Yep, {{lang}} is in flux as is evidenced by the length of this talk page (which should be given a reading when you can find the time because what happens here concerns you – participation is good too). I think that the current version of {{lang}} is broken in that it is too strict in how it asserts its default styling. For the concern that you have voiced here, the sandbox version might be better but it's different in other ways:
{{lang|de|Gelobet seist du, Jesu Christ}}Gelobet seist du, Jesu Christ
{{lang/sandbox|de|Gelobet seist du, Jesu Christ}}Gelobet seist du, Jesu Christ
"{{lang|de|[[Gelobet seist du, Jesu Christ]]}}" → "Gelobet seist du, Jesu Christ"
"{{lang/sandbox|de|[[Gelobet seist du, Jesu Christ]]}}" → "Gelobet seist du, Jesu Christ"
"{{lang|de|Gelobet seist du, Jesu Christ, daß du Mensch geboren bist}}" → "Gelobet seist du, Jesu Christ, daß du Mensch geboren bist"
"{{lang/sandbox|de|Gelobet seist du, Jesu Christ, daß du Mensch geboren bist}}" → "Gelobet seist du, Jesu Christ, daß du Mensch geboren bist"
{{lang|grc|[[Kyrie eleison|Kyrieleis]]}} → Kyrieleis
{{lang/sandbox|grc|[[Kyrie eleison|Kyrieleis]]}Kyrieleis
All of the sandbox renderings are, I think, properly italicized except the title of Luther's hymn. The goal is to not require ''wikimarkup'' for the large number of Latin-script usages of the template and to make sure that non-English text written with Latin script is italicized (non-English, Ancient Greek: Kyrieleis, as a transliterated word written with Latin characters, should be italicized, right?). This lies on top of another goal to produce correct underlying html for all instances of this template and the 650-ish {{lang-??}} templates.
It will not be possible for the template to get it right all of the time – Luther's hymn, for example – because templates cannot see beyond the opening {{ or the closing }} so they cannot know that the context for a particular instance of the template is not to be italicized.
What to do then? For the time being: nothing. If things go as I anticipate, a correct solution will lift itself from the muck and the mire. If your perfect happiness depends on everything being exactly as it was before, alas, I think that will not happen (Luther's hymn). For the most part, those things that were italicized with wiki markup will render correctly (non-Latin scripts excepted).
Trappist the monk (talk) 19:38, 27 December 2017 (UTC)
Thank you for a thoughtful answer, which still leaves me puzzled. I believe that Requiem, Magnificat and Kyrieleis became part of English, and should not be italic, but still I so far thought the lang-template might help understanding from what language a word came, and help a screenreader pronounce. I wonder if I should go over my GAs and FAs and remove the template until things will get better, but I REALLY have more fun things to do. We proclaim such articles are among the best Wikipedia has to offer, and now they don't manage to show a piece title correctly! We have c. 200 cantata articles alone, every single one using the template more than once. --Gerda Arendt (talk) 20:29, 27 December 2017 (UTC)
From MOS:FOREIGNITALIC:
"If looking for a good rule of thumb, do not italicize words that appear in Merriam-Webster Online."
Requiem, Magnificat, yes; Kyrieleis, not there. Spelled correctly? If it has become part of English, then it shouldn't be marked up with {{lang}} as Ancient Greek, right?
There are two purposes for {{lang}}. One is to style the text that it holds according to MOS:FOREIGNITALIC. The second, just as important, maybe more so, is to render correct html so that browsers and screen readers know what to do with the text held by the template; this can get a bit confusing when we switch from left-to-right English into right-to-left Yiddish written with a Hebrew script. The first part, we know, is broken; the second part is not.
Were I you, I would not go over my GAs and FAs and remove the template until things will get better because the corollary to that is: now that things are better, I should go over my GAs and FAs and restore the template.
Trappist the monk (talk) 22:45, 27 December 2017 (UTC)
When do you expect improvement? - Sorry about Kyrieleis, - seems that it only entered German ;) - short for "Kyrie eleison". Which translates to Lord, have mercy! --Gerda Arendt (talk) 23:02, 27 December 2017 (UTC)
You want me to predict the future? If only I could ... It is my general practice to talk about changes and make sandbox changes which allows time for me to rethink and time for comments from other editors before I commit to anything. As a guess, sometime around the new year ...
Trappist the monk (talk) 01:07, 28 December 2017 (UTC)
A week more or less is no problem, but if we get close to TFA day and nothing happened, I'll remove the template. We can't present something that obviously doesn't follow the MoS in the title, twice. --Gerda Arendt (talk) 20:15, 28 December 2017 (UTC)

italics and proper names

There have been a few comments on this talk page saying that non-English proper names are not to be italicized:

  • while italics are commonly used for words in other languages, they are not used for proper namesJustlettersandnumbers (diff)
  • because we don't use italics for proper names – Justlettersandnumbers (diff)
  • We need to be able to selectively disable ... the auto-italicization of non-English content in ... templates that auto-italicize ..., so that the style is not applied to proper namesSMcCandlish (diff)
  • Expected behavior of {{lang}} versus {{lang-xx}} is that the former will always produce non-italic output; it's too often used for proper names which are not italicized in most contexts. – SMcCandlish (diff)

I recently stumbled upon WP:NCPLACE#Emphasis which appears to disagree. I went looking for something to support the comments above and did not find it. Where is it written that non-English proper names are not to be italicized?

Trappist the monk (talk) 15:00, 19 December 2017 (UTC)

MOS:ETY is what I usually cite for that, Trappist the monk. McCandlish is more likely than I to know if it is also covered elsewhere. Justlettersandnumbers (talk) 15:58, 19 December 2017 (UTC)
Right in front of my face and I didn't see it. Always been a failing of mine, Mom says so.
Trappist the monk (talk) 16:10, 19 December 2017 (UTC)
The shortcut MOS:BADITALICS gets even closer to it (same section, though).

In theory, we shouldn't even need to spell that out, because it's common sense. No one writes "US President Donald Trump had an informal meeting with Mexican President Enrique Peña Nieto and several other Latin American dignitaries in Buenos Aires, Argentina, before returning to Washington, DC." That's not a recognizable style advised in any style guide anywhere. But I guess just enough people have gone around italicizing non-English proper names that we had to insert an "AJ rule" to stop doing it. (That seems plausible – I've encountered just enough italicization of non-English PNs to consider it a nuisance.)

Non-English titles of books, films, etc., take italics, but they would anyway because they're titles (MOS:TITLES). Short works and sub-works go in quotation marks, and should also be italicized inside the quotes as non-English. It's sometimes not uniformly done with song titles and such if they're familiar to English speakers. It probably shouldn't be done if the work itself isn't really in a non-English language except for bits of it; "Que Sera, Sera (Whatever Will Be, Will Be)" seems to be more hair-splitting than anyone cares for. Non-English article titles in journals and such should be italicized within the quotation marks by default; but, per WP:CITEVAR, if our article is consistently using a citation style, and it happens to be one which forbids that [and I'd want to see the rule stating that! People make up too much BS about citation styles.], then the italics could be dropped.

When we're comparing the English and non-English names of things, that's a words-as-words case (MOS:WAW), so italics are employed even for a proper noun in that special case: "Munich (German: München)". MOS:BADITALICS/WP:ETY covers this, I think. Historically, this has often not been done very consistently in leads, so it'll be fine if the template does it by default.
 — SMcCandlish ¢ >ʌⱷ҅ʌ<  17:09, 19 December 2017 (UTC)

User:SMcCandlish, your stance above took me by surprise. I have a distinct recollection of you writing somewhere else that non-English titles of songs and other short works, e.g. "Bist du bei mir" and the waltz "Wiener Blut", are to be surrounded by quotation marks and not italicised. This principle, formulated at WP:NCM, has been consistently applied to articles about arias and art songs.
Aside: The changed behaviour of {{Lang}} in this regard is the cause of Gerda's and my consternation. I don't understand why the rewriting of {{Lang}} attempted to cure ills which practically didn't exist. The template applied markup (bold, italics) as directed, and it marked text as foreign. Nothing wrong there. Whether those tags were always within some esoteric rules is a matter proper documentation and editor education. Attempting to automatically correct erroneous use of templates will always end in tears. Rule of software development: 1) when re-implementing (re-writing) a function, don't change its functionality, or its compulsory parameter set – just rewrite it. 2) If you need new functionality, write a new function; then think about migration. -- Michael Bednarek (talk) 02:21, 29 December 2017 (UTC)
Italics: People don't seem to agree on this, so I was taking the "be consistent and avoid inventing exceptions" approach. If NCM wants there to be an additional exception (besides personal/organizational and place proper names), namely for song titles and the like in quotation marks, I don't really have much of an objection, as long as we apply that exception consistently (e.g. to the German title of "99 Red Balloons", and so on).

Coding wisdom: I don't disagree with any of that, and didn't make the changes. However, this really only applies when the extant usage is widespread and ingrained. There's nothing at all wrong with normalizing the behavior of the lang templates, updating their extant documentation, and correcting instances that don't comply. People get used to such changes very quickly, especially when the change is an increase in consistency between templates. If given text like "Non-English equivalents of the rank of count include Graf (Germany), hakushaku (Imperial Japan), konde (Basque), conte (Italian), comte (French), conde (Spanish) ...", no one should have to go read the documentation of a dozen lang templates to apply the correct markup and get consistent results – they should all work the same for basic use cases.
 — SMcCandlish ¢ >ʌⱷ҅ʌ<  02:58, 29 December 2017 (UTC)

More questions on italics

What is the intention for the provision of italics when called as {{lang}} (rather than as {{lang-xx}})? Historically, we've always needed to supply the italicisation manually and Template:Lang has made no effort to do so, but it seems that Template:Lang is applying not-italics automatically. Reading the code comment:

The return value nil causes the calling lang or lang_xx function to set args.italic according to the {{lang}} or {{lang-xx}} template's defined default ('normal' for {{lang}}, 'normal' or 'italic' for {{lang-xx}} depending on the individual template's requirements) or to the value appropriate to |script=, if set.

suggests this is the issue, as I'm seeing style="font-style:normal" being output — overriding any surrounding italics set by ''{{lang|xx|foo}}'' unless I send |italic=yes into the {{lang}} call.

Rather than applying a style attribute, perhaps it might make more sense to vary the tag used to contain the xml:lang attribute — using either <span> or <em> as appropriate? — OwenBlacker (talk) 10:29, 25 December 2017 (UTC)

I also see lots of uses where ''{{lang|de|Der Ring des Nibelungen}}'' previously emitted the title in italics, as it should be, but now it doesn't (ex.: Der Ring des Nibelungen), unless |italic=yes is applied (ex.: Der Ring des Nibelungen [and the wikitext italic markup should then be removed for good measure]), which is a pain. Can we have the previous behaviour back, please? -- Michael Bednarek (talk) 13:05, 25 December 2017 (UTC)

(edit conflict)

The intent is that each {{lang}} and {{lang-??}} template shall be wholly responsible for font style of the text that it wraps. Each template starts with a weak notion of what style it shall apply. For {{lang}}, the style is normal; for the individual {{lang-??}} template, the style is determined by which entry function is called by the template's {{#invoke:}}: lang_xx_normal() or lang_xx_italic().
For {{lang}}, the weak style can be overridden by specifying -Latn script IANA subtag (where the registry permits that) or by |italic=yes. Similarly, for the individual {{lang-??}} templates, |script=Latn will override the weak style set by lang_xx_normal() as will |italic=yes.
The comment that you quoted refers to this code snippet used in lang() where the return value is evaluated:
	args.italic = validate_italic (args.italic);								-- nil or font-style property value

	if nil == args.italic then													-- nil when |italic= absent or not set or |italic=default; args.italic controls
		if 'latn' == subtags.script then										-- script set to latn
			args.italic = 'italic';												-- DEFAULT for {{lang}} templates is upright; but if latn script set for font-style:italic
		else
			args.italic = 'normal';												-- italic not set; script not latn; set for font-style:normal
		end
	end
The table at html italic markup vs wiki italic markup shows how it works.
Module:Lang uses the font-style attribute and its properties because coding that was cleaner and, to me, more understandable than flip-flopping element tags. I'm pretty sure that using the <em>...</em> element for its typical 'style' is contrary to its semantic meaning: stress emphasis; see html5 @ w3c.
There is discussion suggesting that we should break with history and have {{lang}} auto-italicize when all of the text that it wraps is written using the Latn script. We're not there yet.
Trappist the monk (talk) 13:54, 25 December 2017 (UTC)
So in the meantime, 600,000 transclusions will not work as before and as intended? -- Michael Bednarek (talk) 14:04, 25 December 2017 (UTC)
Exaggerations have their place, I suppose, but that place is not here.
These insource: searches (italic markup outside the template and italic markup inside the template) suggest that the issue is somewhat less than 600k articles.
I have an awb script that will replace both outer and inner italic markup with appropriate parameters but am holding off on that until I can get around to making the module support automatic-italics-for-Latn-script-text – no sense in adding |italic=yes and then going back and taking it away because the module can apply italic style automatically. Perhaps in the interim, I'll set the {{lang}} weak style to inherit. If I do that, you should expect that in future, it will return to normal.
Trappist the monk (talk) 16:06, 25 December 2017 (UTC)
The inline CSS is quite annoying. German text is shown by my common.css in a Fraktur font with the font-style property set to normal. This font-style property is now being overrided by the inline font-style property being added by the module, making the Fraktur oblique, which is as unnecessary as it is for non-Latin scripts, since Fraktur is already visually distinct. I can in turn override the obliqueness by putting !important at the end of the property (as I have to do for all the annoying script-formatting templates that contain inline font-family properties), but the code editor doesn't like !important and displays warnings (⚠). As far as flexibility is concerned, it would be better to use i tags. (I agree that em tags would be inappropriate.) I also think it's inelegant to use inline CSS, and it's certainly more concise to use i rather than style="font-style: italic;". It also troubles me that the font-style is being set absolutely without regard to the context. It seems likely to cause problems. — Eru·tuon 19:57, 25 December 2017 (UTC)
So what is this, beat-up-on-Trappist-the-monk-day?
I have some sympathy for your plight, but only some. I would venture to guess that most Wikipedia readers do not have custom css that undoes MOS-approved styling and it is for 'most readers' that we have MOS which says how non-English text is to be formatted.
I proposed the font-style solution ten days ago to little comment. I cannot know that you object to something if you do not say that you object. But that is why I have written so many words on this page: I have written them so that you and other editors can know what it is that I'm thinking and have their say before I act.
Trappist the monk (talk) 23:05, 25 December 2017 (UTC)
Hey Trappist the monk, sorry you're feeling pressured here. I do understand that you're doing a lot of work, some of which is pretty intricate, and it's really frustrating to have people filing incomplete bug reports of a work in progress. I definitely do appreciate the work you're doing here to make these templates more useful and more robust. I'm also noticing some differences for the same reason as Erutuon — I have custom fonts set up for a handful of languages — but there are other problems too, as are being mentioned below. I'm sorry I hadn't seen your discussion about using font-style; I struggle to stay on top of Talk: pages with a watchlist that's unmanageably long. (Similarly, I hadn't replied on the ru-1708 / ru-petr1708 conversation above, as you didn't know to {{ping}} me and I forgot to come back to look.
I tend to do a fair amount of drive-by language tagging (both with {{lang}} and {{lang-xx}}, as appropriate). While the template is in a state of flux, I've been removing surrounding italics and adding |italic=yes, to avoid people reverting the language tagging due to the change in formatting because ''{{lang|es|foo}}'' isn't applying language tags (as I just commented above). I'm much more worried about the bugs that most users will see — with error messages about italic markup and italics being overridden by the template — than I am about custom fonts not showing (which is merely a mild irritation).
I'd suggest it's worth ensuring the code improves invisibly to logged-out users, be that by reduplicative code for when italics surround the template and are applied by it or by running AWB scripts more than once at different stages. But if you anticipate getting the bulk of the work done pretty quickly, then maybe that's less of an option. But effectively breaking one of the most widely-used template sets is definitely worth avoiding. If only so you don't get people like me and Erutuon pestering you while you're trying to concentrate on coding a better template :)
OwenBlacker (talk) 13:00, 28 December 2017 (UTC)
@Trappist the monk: I'm sorry that my tone was unnecessarily harsh. As to your proposal for the use of inline CSS, I had read it but didn't have any clearly formulated thoughts yet, until I saw the italicized Fraktur. It's a silly example: few people care to assign fonts to languages, and fewer use Fraktur. (I suspect that the MOS would recommend that Fraktur not be italicized, if it had any reason to say anything about it: it's so different from regular Latin script.) But I think the principle of avoiding inline CSS as much as possible is still worth following. — Eru·tuon 22:05, 29 December 2017 (UTC)

Message (error: {{lang-xx}}: text has italic markup (help))

Can you please (!) help us with that thing somehow? I don't know how many articles are being defaced with this warning, but the outcome goes beyond any attempts at a manual fix. I see this warning virtually anywhere I go these days. The worse part is that whatever text was there originally, it has been replaced with this error message entirely, so the translation cannot be seen. Isn't there a better way? Poeticbent talk 17:23, 25 December 2017 (UTC)

Right there on the category page that you linked in this topic's header it says, as I write this:
"The following 200 pages are in this category, out of approximately 8,323 total."
The italic markup is very likely the most common error message. The most common causes of that message are described in the help text (some form of which has been linked by the error messages since 7 November 2017). Did you read the help text? If you did and it did not lead you to a correct solution, can you show me the article that resists fixing so that I can help?
Trappist the monk (talk) 19:43, 25 December 2017 (UTC)
Umm, remove the italic markup from this:
{{langx|uk|''Українська Народна Міліція''}} → [Українська Народна Міліція] Error: {{Langx}}: text has italic markup (help)
to make this:
{{langx|uk|Українська Народна Міліція}}Ukrainian: Українська Народна Міліція
See MOS:BADITALICS. Cyrillic text, except when it is the title of a book of other major work, is not italicized. This is a case where the initial editor chose to italicize the Cyrillic and no one noticed. The template, at the time that Ukrainian People's Militia was created, did not and has not since rendered italic text, so the purpose here was not to 'undo' italic markup provided by the template. The new version of the template has merely pointed out this long-standing error.
I've added this example to the help text.
Trappist the monk (talk) 22:43, 25 December 2017 (UTC)
Dear Trappist the monk, I asked you kindly to do something about that overriding template. The same concerns were raised by User:Altenmann below. Instead of addressing my concerns about the template, you seem to be looking at others to perform manual labour. Can you please remove (!) the warning. The warning is the real problem, NOT the italics. Please remove the absurdist scare-mongering in red from articles defaced with this overriding message. I just clicked on: the Mińsk Mazowiecki Ghetto and here it is, again. Poeticbent talk 19:21, 28 December 2017 (UTC)
The error message was there for a reason (now fixed by a third party). The template was malformed:
{{langx|yi|נאוואמינסק ''Novominsk''}}
In this implementation the text is a mix of right-to-left Yiddish written with the Hebrew script and a left-to-right transliteration (I presume – it could be some other language for all I know) written with the Latin script. The template was never intended to support mixed scripts in that way. The error message is merely drawing attention to an improper use that has been improper since the article was created.
Yes, I am looking at others to perform manual labour. I do not read Yiddish, or Polish, or Italian, or Bengali, or ... so must rely on those of us who do have these skills to properly write these templates. Those of us who do have those skills won't know that the template is broken unless we somehow show that the template is broken.
Trappist the monk (talk) 10:57, 29 December 2017 (UTC)
An answer in best traditions of Bastard Operator from Hell. You broke what was working for ten years. Manual labor?? WTF? Templates are supposed to decrease manual labor. The sloppy programming which disrupted hundreds of articles must be reverted. Can someone launch RFC on this? - üser:Altenmann >t 15:12, 29 December 2017 (UTC)
The lang templates were "working" only in the sense that a Rube Goldberg machine "works". They were a loose amalgamation of hacks and workarounds and mixed-up code that frequently displayed text in contravention of the Manual of Style and that frequently emitted incorrect HTML. They used a variety of language codes that were not in the ISO 639 standards, and there was no easy way to track the usage of those codes and correct them; they had to be fixed manually, through a painstaking and tedious manual process. Trappist has begun a process that editors have been discussing for years now, but that nobody was willing to take on (until now): the laborious and painful conversion of these templates to conform to MOS, to use a single system for all languages, and to perform some basic error-checking. As with any conversion of this scale, this process will involve some automated fixes, some semi-automated fixes, and some manual labor. The result will be a set of lang templates that all work in a way that is consistent with MOS and with one another.
I do have one suggestion, though, which is to display the previous template's output, even if it is broken, along with an error message, as we do with the CS1 templates. I see the current method of completely hiding the template's output as less than optimal, a disservice to the reader during this time of transition. – Jonesey95 (talk) 15:30, 29 December 2017 (UTC)
Another possibility might be to reduce the font size of the error message, or indeed to display it only in edit mode as with some infobox errors. And yes, many thanks are due to Trappist for taking this on – it's been a mess for years, and was long overdue for attention.
In the sandbox, perhaps not perfect but better:
{{lang-ru/sandbox|тундра ''tûndra''}} → [тундра tûndra] Error: {{Langx}}: text has italic markup (help)
[тундра ''tûndra''] <span style="color:#d33">Error: {{Langx}}: text has italic markup ([[:Category:Lang and lang-xx template errors|help]])</span>
For the common case where editors have used {{lang-??}} when they should have been using something else ({{?? icon}})
{{lang-ru/sandbox}} → [undefined] Error: {{Langx}}: no text (help)
[undefined] <span style="color:#d33">Error: {{Langx}}: no text ([[:Category:Lang and lang-xx template errors|help]])</span>
Every error message now follows the raw text from the template; html markup for the text is not rendered.
Trappist the monk (talk) 18:06, 29 December 2017 (UTC)
  • Much better, thanks, but can you please remove {{lang-xx}} from the message, because it makes no sense whatsoever; for the reader, the outcome could look something like this: (Rusian: тундра tûndra error: text has italic markup, help) and please make it smaller. Poeticbent talk 19:23, 29 December 2017 (UTC)

Italic error - how to handle it properly

This case illustrates the most basic problem with wikipedia development: close to zero understanding and/or respect of the basics of user interface. And this discussion is best illustration.Did you read the help text? Who reads the fucking manual today? The proper approach is error message containing the advice: "...contains italc markup. Please remove it." Instead I have my watchlist full of edits removing the lang-ru templates altogether by well-meaning but clueless editors. Last but not the least: if code detected and reported italics markup then what prevented it from handling it normally? - üser:Altenmann >t 20:14, 27 December 2017 (UTC)

Alternatives to error messages in the rendered output

It probably makes more sense to have all error messages show up in preview (they way they do for citation template errors, at top of editing window) instead of in the displayed output for readers, to whom the errors are meaningless and annoying/confusing. Might also make sense to use a hidden cleanup category.  — SMcCandlish ¢ >ʌⱷ҅ʌ<  08:32, 30 December 2017 (UTC)

Further italics problems

Now neither of these work to produce italic output:

  • {{lang|gd|Cuindlis}}Cuindlis
  • ''{{lang|gd|Cuindlis}}''Cuindlis

but this does, even though the idea was that this would throw an error (last I looked, in previous thread on italics handling):

  • {{lang|gd|''Cuindlis''}} → [Cuindlis] Error: {{Lang}}: text has italic markup (help)

Even if this doesn't throw an error, it's not really the ideal markup, since the italicization isn't literally part of the foreign material, but meta-style applied around it in the English-language context.
 — SMcCandlish ¢ >ʌⱷ҅ʌ<  12:14, 30 December 2017 (UTC)

I suppose you might be told to use |italic=yes: {{lang|gd|Cuindlis|italic=yes}}Cuindlis. -- Michael Bednarek (talk) 12:45, 30 December 2017 (UTC)
Don't be snide, it doesn't help the conversation. Yes, |italic=yes works (that is, after all, the purpose of that parameter) and will be required when text is not wholly Latin script (assuming that editors do not reject auto-italics as an option).
Trappist the monk (talk) 13:17, 30 December 2017 (UTC)
Addressed in the sandbox, I think:
  • {{lang/sandbox|gd|Cuindlis}}<span title="Scottish Gaelic-language text"><i lang="gd">Cuindlis</i></span>Cuindlis – italic because auto-italics detected all-Latn-script-text
  • ''{{lang/sandbox|gd|Cuindlis}}''''<span title="Scottish Gaelic-language text"><i lang="gd">Cuindlis</i></span>''Cuindlis – duplicate external markup will be removed by MediaWiki; after html rendering looks like this:
    <i><span lang="gd" xml:lang="gd">Cuindlis</span></i>
  • {{lang/sandbox|gd|''Cuindlis''}}[''Cuindlis''] <span style="color:#d33">Error: {{Lang}}: text has italic markup ([[:Category:Lang and lang-xx template errors|help]])</span> → [Cuindlis] Error: {{Lang}}: text has italic markup (help) – internal markup will be ignored by browsers; after html rendering looks like this:
    <i><span lang="gd" xml:lang="gd"><i>Cuindlis</i></span></i>
See the most recent tables at html italic markup vs wiki italic markup.
The error message for italic markup in {{lang}} is disabled while there are still old-form {{lang-??}} templates that call {{lang}} (those are the templates listed at most lang-?? templates switched to the module).
Trappist the monk (talk) 13:17, 30 December 2017 (UTC)

html italic markup vs wiki italic markup

Editor Izno has changed Module:Lang/sandbox with this edit.

To me, this looks like the similar change (discussion) that was made to many of the {{lang-??}} templates and since reverted. Because of that, I'm inclined to revert Editor Izno's change without we first establish that the current template is proven to be causing these unspecified lint errors.

Is there unequivocal evidence of such damage?

Trappist the monk (talk) 15:37, 29 November 2017 (UTC)

Because wikitext '' is ambiguous as to opening or closing tag, use like ''{{lang|Latin character language|Name of work}}'' (which the documentation apparently calls for!) causes the future parser plus RemexHTML to emit <i><span lang="Latin character language"></span></i><i>Name of work</i>, which causes a number of the lang-related errors in Special:LintErrors/html5-misnesting (the other vast majority are related to using an inline template where a block template is called for, as I noted above). The current processor plus HTML Tidy actually nukes all of the italics markup entirely, which is also probably undesirable (<span lang="Latin character language">Name of work</span>). I have not tested the change to see if it fixes the problem or not.
This can be evidenced on War and Peace with Russkiy Vestnik (''{{lang|ru-Latn|Russkiy Vestnik}}''), which currently generates <span lang="ru-Latn">Russkiy Vestnik</span>; which would generate <i><span lang="ru-Latn"></span></i>Russkiy Vestnik<i></i> in the future (using the Parser migration tool to get that HTML directly from future version source); and which clearly should generate <i><span lang="ru-Latn"><i>Russkiy Vestnik</i></span></i> as the current editor intent.
(Now, whether the external italics should be there as the correct editor intent is irrelevant to the technical question and can't be evaluated by the template anyway, per a whole lot of the discussion about Lua-fying above.)
The concerns stated by the editors in the discussion on WOS's talk page are mostly illegitimate in this context. The reason we use '' in the MOS is because that's primary an article-driven styling for wikitext and we use wikitext in articles because that's the wiki way (I doubt anyone needs to understand here why we use wikitext in articles). We are not so-constrained in the template space where we typically bump into concerns or limitations regarding well-formed HTML.
Justletter's use of {{langx|it|'ABC'}} to add bolding rather than italics is not documented as a valid use case nor do I believe it should be supported internal to the template. Items which should receive bolding for some other reason (MOS:BOLD) should also take the italics where italics are called for as highlighting non-English non-Latin text in my opinion. --Izno (talk) 16:22, 29 November 2017 (UTC)
And indeed, this revision shows that my change fixes the problem, with correct HTML provided by both the current and future parsers. --Izno (talk) 17:31, 29 November 2017 (UTC)
(edit conflict)
Yeah, I agree that '' is ambiguous; it exists so will be used. The {{lang}} documentation that suggests italic markup outside the template is, I think, suspect. {{Lang}} did not, at the time the documentation was written, render any italics so some mechanism was necessary to apply those italics. Now comes Module:Lang which can, more-or-less intelligently, read the IETF language tag and |italic= and decide what to do with the 'text' based on that reading. Yeah, it can't see outside of its parent template so it doesn't / can't know that it is contributing to misnested html.
Is this issue only related to instances of {{lang}} templates that specify Latn script in the IETF tag parameter? If so, we can remove that functionality, though I'd rather not, because it seems an obvious thing to have the template/module do (and editors can still override the automatic italics with |italic=no).
Really? This is 'correct'? where one <i><i>...</i></i> is nested inside of another? Clearly it 'works', but just as clearly, one of the <i>...</i> is superfluous:
<i><span lang="ru-Latn"><i>Russkiy Vestnik</i></span></i>Russkiy Vestnik
Perhaps that's a job for a bot down the road: to remove the extraneous wikimarkup outside the template.
Pinging editors from the other discussion because you mentioned some of them without pings. @WOSlinker, Justlettersandnumbers, Uanfala, Jonesey95, and Scriptions:
Trappist the monk (talk) 18:31, 29 November 2017 (UTC)
Thank you for the ping, Trappist. I agree with Izno that my use of single primes to create bold, non-italic text is undocumented, but it's a lot simpler than using {{noitalic}} and triple primes. It worked, so I did it; I'd like not to need to do it. I've asked above for proper support of bold text rather than this or any other clumsy work-around. I envisage a |bold= parameter which would default to no but could be set to yes. Is that something that could easily be realised? Ideally, if set to yes it would automatically set |italic=no, unless that is purposely over-ridden. I had assumed that some sort of a bot run would eventually be needed to sort out this "undocumented use" of mine and others like it. Once again, my thanks to those who are working on making this better. Justlettersandnumbers (talk) 19:21, 29 November 2017 (UTC)
@Justlettersandnumbers: I think a |bold= is quite reasonable and obviously do-able... but why? What is the use case for bold rather than italics, and why is that use case not better met by both bold and italics (bold for whatever meaning you are attempting to assign to the markup and italic for the non-English language meaning)? MOS:BOLD provides for very few uses bold. --Izno (talk) 22:54, 29 November 2017 (UTC)
For templates that use Module:Lang, bold font can be achieved with standard wikimarkup:
{{langx|af|'''bold text'''}}Afrikaans: bold text
Don't want italic? set |italic=no.
Trappist the monk (talk) 13:07, 30 November 2017 (UTC)
@Justlettersandnumbers: They're not primes, they're apostrophes. If you use primes, ′′like this′′ or ′′′this′′′, they're displayed literally. --Redrose64 🌹 (talk) 21:28, 30 November 2017 (UTC)
I can contrive an example that you might see elsewhere (especially in fiction or in briefly writing about some memory): <i class="thoughtspeak">The USS <i class="shipname">Enterprise</i> was sailing from the port of San Diego when...</i>. You wouldn't close the first italic tag when you reach the second open italic tag because you had not yet reached the end of your voiced thought. Maybe one that might actually appear would be some quotation about the USS Enterprise in another language e.g. <q><i lang="es">Spanish text <i lang="en">USS <i class="shipname">Enterprise</i></i> Spanish text</i></q> (mind you, <q lang="es">...</q> might be preferable but not as easy to integrate into this module--Erutuon has a comment in that direction).
In the general case, it's not incorrect for this markup to render like so, and I believe either browsers implement the switching natively in their default CSS files or that we currently have something in one of the CSS files Wikipedia sends to the browser instructing the browser to do so. It's only in this specific case that we have identified that the italics on the inside and the italics on the outside are superfluous.
I believe this issue presents itself where any italics are used, automated or not, not solely with Latn script in the tag. I think it preferable to keep the automated functionality in the template. I agree that we should fix the cases where ''{{lang|Latin character language|Name of work}}'' is used (I am unsure that it is bot-able per WP:CONTEXTBOT, but probably is WP:AWBable). I think we should also detect cases like JLAN's apostrophers (e.g. {{lang|ru-Latn|'Russian in Latin characters'}}) and a suitable fix for that issue programmed also (whether that's removal of the offending characters internal to the template or addition of a separate parameter--the functionality for which I have just queried Justlettersandnumbers). --Izno (talk) 22:54, 29 November 2017 (UTC)
I understand that it is sometimes appropriate to nest <i>...</i> tags.
If I understand you, every {{lang-??}} template that does not directly use Module:Lang (they do use the module indirectly through {{lang}}) and that has hard-coded italic wiki markup, will be causing lint errors. Is that correct?
What are JLAN's apostrophers?
Trappist the monk (talk) 13:07, 30 November 2017 (UTC)
It is possible that every one will cause lint errors. I do not know for certain, however.
JLAN's apostrophers == Justlettersandnumbers's apostrophes. --Izno (talk) 13:55, 30 November 2017 (UTC)
Ah, right. Your example ({{lang|ru-Latn|'Russian in Latin characters'}}) differs from Editor Justlettersandnumbers's example ({{langx|it|'Livorno'}}). Still, in both cases, I think that the module is doing the correct thing in that it does not convert a single apostrophe into Roman bold-face font.
Trappist the monk (talk) 18:57, 30 November 2017 (UTC)
() I believe this search is pretty close to the upper bound of all articles where this bolding hack is present that can be fixed with TTM's suggested fix. In review, I don't think a |bold= is necessary. However, the templates used appear to need to be able to take |italic= as a passthrough their parent template. (Or is it the case that Template:language with name is going away?) --Izno (talk) 19:27, 1 December 2017 (UTC)
Well, it's not a suggested fix per se, rather, it's a progression. As we migrate the {{lang-??}} templates to use Module:lang directly, the bolding hack will fail to work and the text that was hacked will be rendered single-quoted in italic font. We cannot / should not change all {{lang-??}} templates in a single operation. It will take time. If anyone is reading this and cares about hacked instances of these templates, keep an eye on the template pages that are of interest to you so that when the template is switched to use the module, you can undo the hacks and write the template instances correctly.
{{Language with name}} isn't going away but it will no longer be used by the {{lang-??}} templates. The functionality currently provided to unconverted {{lang-??}} templates by {{language with name}} has been subsumed into Module:lang.
Trappist the monk (talk) 20:27, 1 December 2017 (UTC)
If <i></i> is used, it would probably be best to move the language (and any other) attributes there (<i lang="xx"></i>) instead of having two tags <span lang="xx"><i></i></span>. For what it's worth, that's what we do on Wiktionary. — Eru·tuon 22:35, 29 November 2017 (UTC)
Moving that direction is probably a bit more complex than my suggested change for right now, while the module is a bit in motion. It might help prep the module for a block implementation as well as the current inline implementation. --Izno (talk) 22:59, 29 November 2017 (UTC)
This sort of markup is perfectly suited to the transliteration rendering of the {{lang-??}} templates because the transliteration is always Latin script and so always italicized:
{{#invoke:lang|lang_xx_inherit|code=el|text=Θεοτόκος|italic=no|translation=God-bearer|translit=Theotokos}}
Greek: Θεοτόκος, romanizedTheotokos, lit.'God-bearer'
[[Greek language|Greek]]: <span lang="el" style="font-style: normal;">Θεοτόκος</span>, <small>[[Romanization of Greek|romanized]]:&nbsp;</small><span title="Greek-language romanization"><i lang="el-Latn">Theotokos</i></span>, <small>[[Literal translation|lit.]]&thinsp;</small>&#39;God-bearer&#39;[[Category:Pages using Lang-xx templates]]
Trappist the monk (talk) 18:57, 30 November 2017 (UTC)
So, it seems that the template has been updated, for which many thanks (due, I believe to Trappist the monk). But it's been updated with the change of handling of wiki-markup for italic text, such that forms such as {{langx|it|'Livorno'}} now display as 'Livorno' instead of Livorno, exactly the bug I complained of further up this page on 16 October. So I ask again, as I asked then: if the change is an important improvement, can someone please give some hint as to how the various affected pages could be tracked down and fixed? I have tried searching for insource: "{{langx|it|'", for example, but that does not yield useful results (our search engine ignores the crucial apostrophe). Ideas? Justlettersandnumbers (talk) 18:52, 9 December 2017 (UTC)
Do the search with a regex: insource:/\{\{lang\-it\|'[^']/
Trappist the monk (talk) 18:59, 9 December 2017 (UTC)
I'm still trying to understand: [...] why? What is the use case for bold rather than italics, and why is that use case not better met by both bold and italics (bold for whatever meaning you are attempting to assign to the markup and italic for the non-English language meaning)? MOS:BOLD provides for very few uses bold. My expectation is that wherever WP:MOSBOLD calls for bolding, and where WP:MOSITALICS would call for italics, should receive both. The search I linked above works. --Izno (talk) 19:34, 9 December 2017 (UTC)
Izno, because we don't use italics for proper names (hence the requests for the capability to disable italics in the template), but do sometimes need to bold-face them. Thanks, Trappist the monk, will try. It'd be really good if the documentation for our search engine actually gave some advice on how to search for things. Justlettersandnumbers (talk) 19:41, 9 December 2017 (UTC)
OK, I just happened across this: Rocco and His Brothers. Why does using italics for a proper name in English (in accordance with our MOS) trigger such an alarming warning? I don't see any reason why lang-en needs to be used there, but nor do I see any reason for it to create such a bloodbath. Could we perhaps tone down or eliminate such messages for this non-fatal error? Justlettersandnumbers (talk) 23:07, 9 December 2017 (UTC)
In general, templates are responsible for the 'style' of the rendered output. All of the 600ish {{lang-??}} templates have a default setting to italicize or to not italicize according to the language's writing system. When that writing system is a Latin script, the templates default to italic rendering in accordance with MOS:FOREIGNITALIC. The English language version of the template {{lang-en}} does not italicize because this is the English Wikipedia where we do not italicize normal English text.
Because of this, use of {{lang-en}} at en.wiki is mostly pointless; the template's documentation says as much. For your example, it is correct to italicize Rocco and His Brothers because it is a film title per WP:ITALIC but there is really no need to use {{lang-en}} there and, my opinion, no need to label Rocco and His Brothers as English text.
The error message is there because, instead of wiki markup, these templates use a parameter to control the italic rendering which is not in keeping with the hard-coded method used by the old templates. It is necessary to know where templates with italic markup are located. You noticed, so the mechanism must work. Each error message has a link to help information at Category:Lang and lang-xx template errors so that editors can learn what the error message means and then take appropriate action. As I write this, of the 636,000ish pages that transclude Module:lang, there are 9200ish pages with errors; a number that appears to be going down.
Trappist the monk (talk) 00:30, 10 December 2017 (UTC)
Lang-en (without something more specific) is probably only useful for English-language text inside quoted non-English language text, e.g. {{lang|es|Mi casa es su casa, {{lang|en|brother}}.}}. Even with something more specific, like en-US it's only useful for a) pre-modern dialects, b) linguistic markup of regionalisms, and c) direct comparisons of things like US versus UK English. I sometime encounter it (in ref citations especially, of all places) simply to mark up something as American or British or whatever, and this is pointless and annoying. I remove such instances on-sight.  — SMcCandlish ¢ >ʌⱷ҅ʌ<  08:12, 10 December 2017 (UTC)

I have been wondering of late if the correct solution to the 'italics problem' wouldn't be to use css in the <span>...</span> tag. For text that is to be italic the templates would write:

<span style="font-style:italic">

and for upright, non-italicized text:

<span style="font-style:normal">

We might extend the |italic= parameter to allow for a third value unset which would have the templates write

<span style="font-style:inherit"> (or just leave out the font-style property)
  1. normal text with italic text in the rendering – like this if |italic=yes
  2. italic text with normal text inside of italic markup – like this if |italic=no
  3. italic text with italic inherit text inside of italic markup – like this if |italic=unset
  4. normal text dictates normal inherit text in the rendering – like this if |italic=unset

Trappist the monk (talk) 14:07, 14 December 2017 (UTC)

<i> is correct/fine per the spec. --Izno (talk) 14:31, 14 December 2017 (UTC)
As far as it goes, yes. But we can't do case 2 and use |italic= to control the template's rendering:
''some italic text {{lang|en|with normal text embedded|italic=no}} and more italic text''
some italic text with normal text embedded and more italic text
For this case we have to override the wiki markup somehow. If we keep the wiki markup in the module, as it is now implemented, we can write:
''some italic text {{lang|en|with normal text embedded|italic=yes}} and more italic text''
some italic text with normal text embedded and more italic text
but that is semantically incorrect and confusing. The font-style property allows us to say that no means no and yes means yes and unset means 'use the already set style'. Also, by doing this we switch a property rather than a whole tag which to me seems cleaner.
Trappist the monk (talk) 15:18, 14 December 2017 (UTC)

In Module:Lang/sandbox I have reworked italic handling so that it supports the font-style property I described above. This version of the sandbox code introduces two additional accepted values for |italic=. The table attempts to illustrate how the new code works:

lang |italic= parameter operation
|italic= value description example code result
  • parameter not present;
  • parameter present, not set;
  • invalid value
  • module applies default (upright) style;
  • yields to script subtag latn;
  • invalid values treated as default
{{lang|ru|тундра}} тундра
{{lang|ru-latn|tûndra}} tûndra
default {{lang|ru|тундра|italic=default}} тундра
{{lang|ru-latn|tûndra|italic=default}} tûndra
no
  • module applies upright style;
  • overrides script subtag latn
{{lang|ru|тундра|italic=no}} тундра
{{lang|ru-latn|tûndra|italic=no}} tûndra
yes
  • module applies italic style;
  • ignores script subtag latn
{{lang|ru|тундра|italic=yes}} тундра
{{lang|ru-latn|tûndra|italic=yes}} tûndra
unset
  • module applies no style;
  • overrides script subtag latn;
  • style inherited from external markup
{{lang|ru|тундра|italic=unset}} тундра
''{{lang|ru|тундра|italic=unset}}'' тундра
{{lang|ru-latn|tûndra|italic=unset}} tûndra
''{{lang|ru-latn|tûndra|italic=unset}}'' tûndra

Results are similar for the {{lang-??}} templates. You can see that at my sandbox though the rendering there is a bit more cryptic.

A variant of this table should become part of the documentation for the {{lang}} and {{lang-??}} templates. A better base language is in order because es-Latn is a malformed IANA language tag (Latn is a suppressed script for es – we should detect and do something about that) but it works here as an illustration for now.

Trappist the monk (talk) 17:57, 20 December 2017 (UTC)

Still not right. The underlying html should not restate the norm. The norm is not italicized so {{lang}} should not write html that has the font-style:normal property for default rendering. If a font-style property is to be used, it should be used only when explicitly required by |italic=. I have construed the historic default state for {{lang}}:

default state = not italicized = |italic=nofont-style:normal

In fact, it should be:

default state = not italicized = |italic=<not set>font-style:inherit

Because, in this case, the omission or inclusion of font-style:inherit is indistinguishable by the reader, we can omit. So I've tweaked the sandbox.

Because it is now necessary to evaluate the state of an internal variable when deciding to include or omit font-style:normal, we might as well evaluate the variable to choose <span>...</span> or <i>...</i>. So I've tweaked the sandbox.

lang |italic= parameter operation
|italic= value description example code result html markup
  • parameter not present;
  • parameter present, not set;
  • invalid value
  • module applies style from:
  •   auto-italics or
  •   script subtag latn;
  • else inherits from external markup;
  • invalid values treated as default
{{lang/sandbox|ru|тундра}} тундра <span title="Russian-language text"><span lang="ru">тундра</span></span>
{{lang/sandbox|ru|tûndra}} tûndra <span title="Russian-language text"><i lang="ru">tûndra</i></span>
{{lang/sandbox|ru-latn|tûndra}} tûndra <span title="Russian-language text"><i lang="ru-Latn">tûndra</i></span>
default {{lang/sandbox|ru|тундра|italic=default}} тундра <span title="Russian-language text"><span lang="ru">тундра</span></span>
{{lang/sandbox|ru|tûndra|italic=default}} tûndra <span title="Russian-language text"><i lang="ru">tûndra</i></span>
{{lang/sandbox|ru-latn|tûndra|italic=default}} tûndra <span title="Russian-language text"><i lang="ru-Latn">tûndra</i></span>
no
  • module applies upright style;
  • overrides auto-italics
  • overrides script subtag latn;
  • overrides external markup
{{lang/sandbox|ru|тундра|italic=no}} тундра <span title="Russian-language text"><span lang="ru" style="font-style: normal;">тундра</span></span>
{{lang/sandbox|ru|tûndra|italic=no}} tûndra <span title="Russian-language text"><span lang="ru" style="font-style: normal;">tûndra</span></span>
{{lang/sandbox|ru-latn|tûndra|italic=no}} tûndra <span title="Russian-language text"><span lang="ru-Latn" style="font-style: normal;">tûndra</span></span>
''{{lang/sandbox|ru|tûndra|italic=no}}'' tûndra ''<span title="Russian-language text"><span lang="ru" style="font-style: normal;">tûndra</span></span>''
yes
  • module applies italic style;
  • ignores auto-italics;
  • ignores script subtag latn
{{lang/sandbox|ru|тундра|italic=yes}} тундра <span title="Russian-language text"><i lang="ru">тундра</i></span>
{{lang/sandbox|ru-latn|tûndra|italic=yes}} tûndra <span title="Russian-language text"><i lang="ru-Latn">tûndra</i></span>
unset
  • module applies no style;
  • inherits style from external markup;
  • disables auto-italics
  • disables script subtag latn;
{{lang/sandbox|ru|тундра|italic=unset}} тундра <span title="Russian-language text"><span lang="ru">тундра</span></span>
''{{lang/sandbox|ru|тундра|italic=unset}}'' тундра ''<span title="Russian-language text"><span lang="ru">тундра</span></span>''
{{lang/sandbox|ru-latn|tûndra|italic=unset}} tûndra <span title="Russian-language text"><span lang="ru-Latn">tûndra</span></span>
''{{lang/sandbox|ru-latn|tûndra|italic=unset}}'' tûndra ''<span title="Russian-language text"><span lang="ru-Latn">tûndra</span></span>''

Trappist the monk (talk) 17:46, 27 December 2017 (UTC)

I have tweaked Module:lang/sandbox so that the {{lang-??}} templates will, as much as possible, produce output similar to that produced by {{lang}} given the same or analogous inputs. Compare to the table above:

lang-xx |italic= parameter operation
|italic= value description example code result html markup
  • parameter not present;
  • parameter present, not set;
  • invalid value
  • module applies style from:
  •   |script=latn;
  • else inherits from external markup;
  • invalid values treated as default
{{lang-ru/sandbox|тундра}} Russian: тундра [[Russian language|Russian]]: <span lang="ru">тундра</span>
{{lang-ru/sandbox|tûndra}} Russian: tûndra [[Russian language|Russian]]: <i lang="ru">tûndra</i>
{{lang-ru/sandbox|script=latn|tûndra}} Russian: tûndra [[Russian language|Russian]]: <i lang="ru-Latn">tûndra</i><span class="lang-comment" style="font-style: normal; display: none; color: #33aa33; margin-left: 0.3em;">{{langx}} uses deprecated parameter(s) </span>
default {{lang-ru/sandbox|тундра|italic=default}} Russian: тундра [[Russian language|Russian]]: <span lang="ru">тундра</span>
{{lang-ru/sandbox|tûndra|italic=default}} Russian: tûndra [[Russian language|Russian]]: <i lang="ru">tûndra</i>
{{lang-ru/sandbox|script=latn|tûndra|italic=default}} Russian: tûndra [[Russian language|Russian]]: <i lang="ru-Latn">tûndra</i><span class="lang-comment" style="font-style: normal; display: none; color: #33aa33; margin-left: 0.3em;">{{langx}} uses deprecated parameter(s) </span>
no
  • module applies upright style;
  • overrides |script=latn;
  • overrides external markup
{{lang-ru/sandbox|тундра|italic=no}} Russian: тундра [[Russian language|Russian]]: <span lang="ru" style="font-style: normal;">тундра</span>
{{lang-ru/sandbox|tûndra|italic=no}} Russian: tûndra [[Russian language|Russian]]: <span lang="ru" style="font-style: normal;">tûndra</span>
{{lang-ru/sandbox|script=latn|tûndra|italic=no}} Russian: tûndra [[Russian language|Russian]]: <span lang="ru-Latn" style="font-style: normal;">tûndra</span><span class="lang-comment" style="font-style: normal; display: none; color: #33aa33; margin-left: 0.3em;">{{langx}} uses deprecated parameter(s) </span>
''{{lang-ru/sandbox|script=latn|tûndra|italic=no}}'' Russian: tûndra ''[[Russian language|Russian]]: <span lang="ru-Latn" style="font-style: normal;">tûndra</span><span class="lang-comment" style="font-style: normal; display: none; color: #33aa33; margin-left: 0.3em;">{{langx}} uses deprecated parameter(s) </span>''
yes
  • module applies italic style;
  • ignores |script=latn
{{lang-ru/sandbox|тундра|italic=yes}} Russian: тундра [[Russian language|Russian]]: <i lang="ru">тундра</i>
{{lang-ru/sandbox|script=latn|tûndra|italic=yes}} Russian: tûndra [[Russian language|Russian]]: <i lang="ru-Latn">tûndra</i><span class="lang-comment" style="font-style: normal; display: none; color: #33aa33; margin-left: 0.3em;">{{langx}} uses deprecated parameter(s) </span>
unset
  • module applies no style;
  • inherits style from external markup;
  • disables |script=latn
{{lang-ru/sandbox|тундра|italic=unset}} Russian: тундра [[Russian language|Russian]]: <span lang="ru">тундра</span>
''{{lang-ru/sandbox|тундра|italic=unset}}'' Russian: тундра ''[[Russian language|Russian]]: <span lang="ru">тундра</span>''
{{lang-ru/sandbox|script=latn|tûndra|italic=unset}} Russian: tûndra [[Russian language|Russian]]: <span lang="ru-Latn">tûndra</span><span class="lang-comment" style="font-style: normal; display: none; color: #33aa33; margin-left: 0.3em;">{{langx}} uses deprecated parameter(s) </span>
''{{lang-ru/sandbox|script=latn|tûndra|italic=unset}}'' Russian: tûndra ''[[Russian language|Russian]]: <span lang="ru-Latn">tûndra</span><span class="lang-comment" style="font-style: normal; display: none; color: #33aa33; margin-left: 0.3em;">{{langx}} uses deprecated parameter(s) </span>''

Trappist the monk (talk) 16:34, 29 December 2017 (UTC)

Live module synched from the sandbox; template documentation updated to reflect these changes.

Trappist the monk (talk) 12:10, 31 December 2017 (UTC)

Apparently spurious "no text" error when lang is used in Template:efn

Prose example with efn template following.[a]

Notes

  1. ^ [Ich glaube, daß darin das Wesentliche von dem liegt, was ich sagen wollte; ich drückte darin ein wenig meine Philosophie aus, vielleicht enthält Mein Studenbuch mit seinen 167 Holzschintten potentiell alles das, was ich danach geschaffen habe, denn ich habe wo anders und später eine ganze Anzahl von Themen daraus entwickelt.] Error: [undefined] Error: {{Langx}}: missing language tag (help): text has italic markup (help)

For some reason, as in the example above, when there is an error in a lang template used within an {{efn}} template, there is an apparently spurious "no text" error. It does not appear when the same lang template is used in normal prose:

[Ich glaube, daß darin das Wesentliche von dem liegt, was ich sagen wollte; ich drückte darin ein wenig meine Philosophie aus, vielleicht enthält Mein Studenbuch mit seinen 167 Holzschintten potentiell alles das, was ich danach geschaffen habe, denn ich habe wo anders und später eine ganze Anzahl von Themen daraus entwickelt.] Error: {{Langx}}: text has italic markup (help)

This is a minor bug, if it is a bug. – Jonesey95 (talk) 17:28, 2 January 2018 (UTC)

That is and is not an error in the live version of Module:lang. Since the last sync, the sandbox has been tweaked to disable italic markup detection when |italic=unset which is the needed fix.[a]

Notes

  1. ^ German: Ich glaube, daß darin das Wesentliche von dem liegt, was ich sagen wollte; ich drückte darin ein wenig meine Philosophie aus, vielleicht enthält Mein Studenbuch mit seinen 167 Holzschintten potentiell alles das, was ich danach geschaffen habe, denn ich habe wo anders und später eine ganze Anzahl von Themen daraus entwickelt.
The spurious no-text is puzzling as is the interleaving of the two error messages. Module:Lang does not issue multiple error messages; it quits on the first error so it would appear that {{lang-de}} is being called twice and one of those times it is not getting its required input. The interleaving is, I think, a result of MediaWiki cleaning up something.
The |italic=unset tweak, detection of malformed wiki markup for {{lang}} (4 & 6+ apostrophes), and support for the new |label= are on-deck as the next changes to the live module, presuming anyone cares to comment before actual implementation (instead of waiting to pile-on after the fact).
Trappist the monk (talk) 18:48, 2 January 2018 (UTC)

Quick AWB fix for about 900 pages

Resolved

This Petscan report shows a list of about 900 pages for which this should be the quick fix. Based on the categories the articles are in, I am presuming that they all use {{lang-bg}}, followed by Bulgarian text wrapped in italics. The italic markup should be removed. Someone with AWB access and a tolerance for a bit of tedium should be able to make quick work of them. – Jonesey95 (talk) 14:23, 2 January 2018 (UTC)

This appears to do the job:
find: (\{\{\s*lang\-[a-z]{2,3}\s*\|)\s*''([ \p{IsCyrillic}]+)\s*''\s*(\}\})
replace: $1$2$3
I started with 814, have done 50 and will pick at it as I am moved to do so.
Trappist the monk (talk) 17:53, 2 January 2018 (UTC)
Thanks. I found a workaround using AutoEd and have done about 60 myself. I'll pick away at them too. Your case is more general, so I will probably adapt it in the future. – Jonesey95 (talk) 18:14, 2 January 2018 (UTC)
These are done. Nice work. We have reduced the lang template error category's count from about 7,500 to 6,000 today. – Jonesey95 (talk) 23:00, 2 January 2018 (UTC)