<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="Generator" content="Microsoft Word 15 (filtered medium)">
<style><!--
/* Font Definitions */
@font-face
        {font-family:"Cambria Math";
        panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
@font-face
        {font-family:"DejaVu Sans Mono";
        panose-1:2 11 6 9 3 8 4 2 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0in;
        margin-bottom:.0001pt;
        font-size:11.0pt;
        font-family:"Calibri",sans-serif;}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:#0563C1;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {mso-style-priority:99;
        color:#954F72;
        text-decoration:underline;}
p.msonormal0, li.msonormal0, div.msonormal0
        {mso-style-name:msonormal;
        mso-margin-top-alt:auto;
        margin-right:0in;
        mso-margin-bottom-alt:auto;
        margin-left:0in;
        font-size:11.0pt;
        font-family:"Calibri",sans-serif;}
span.EmailStyle18
        {mso-style-type:personal-reply;
        font-family:"Calibri",sans-serif;
        color:windowtext;}
span.kw4
        {mso-style-name:kw4;}
span.br0
        {mso-style-name:br0;}
span.sy2
        {mso-style-name:sy2;}
.MsoChpDefault
        {mso-style-type:export-only;
        font-family:"Calibri",sans-serif;}
@page WordSection1
        {size:8.5in 11.0in;
        margin:1.0in 1.0in 1.0in 1.0in;}
div.WordSection1
        {page:WordSection1;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]-->
</head>
<body lang="EN-US" link="#0563C1" vlink="#954F72">
<div class="WordSection1">
<p class="MsoNormal">Alas, speakers of RTL languages would probably find it more convenient to use standard English C&#43;&#43;.
<o:p></o:p></p>
<p class="MsoNormal"><o:p>&nbsp;</o:p></p>
<p class="MsoNormal">I never mean the C&#43;&#43; to be translatable into all 200&#43; world languages that have writing. Each and every such translation will indeed be a major undertaking. The language keywords will actually be an easy part. More difficult will be to
 translate the library. I suspect the only realistic solution will be to create a set of “national” headers that will map onto the established definitions. For example, the
<span lang="RU">стдвв</span>.<span lang="RU">г</span><span lang="RU"> </span>header I used in the example could include the following definition<o:p></o:p></p>
<p class="MsoNormal"><o:p>&nbsp;</o:p></p>
<p class="MsoNormal"><span class="kw4"><span style="font-size:9.5pt;font-family:&quot;DejaVu Sans Mono&quot;;color:blue;background:white">inline int</span></span><span style="font-size:9.5pt;font-family:&quot;DejaVu Sans Mono&quot;;color:black;background:white">&nbsp;</span><span lang="RU" style="font-size:9.5pt;font-family:&quot;DejaVu Sans Mono&quot;;color:black;background:white">печать</span><span class="br0"><span style="font-size:9.5pt;font-family:&quot;DejaVu Sans Mono&quot;;color:green;background:white">(</span></span><span class="kw4"><span style="font-size:9.5pt;font-family:&quot;DejaVu Sans Mono&quot;;color:blue;background:white">const
 char</span></span><span class="sy2"><span style="font-size:9.5pt;font-family:&quot;DejaVu Sans Mono&quot;;color:#000040;background:white">*</span></span><span style="font-size:9.5pt;font-family:&quot;DejaVu Sans Mono&quot;;color:black;background:white">&nbsp;format, ...&nbsp;</span><span class="br0"><span style="font-size:9.5pt;font-family:&quot;DejaVu Sans Mono&quot;;color:green;background:white">)</span></span><o:p></o:p></p>
<p class="MsoNormal"><span lang="RU">{<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="RU">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>return printf(<span style="font-size:9.5pt;font-family:&quot;DejaVu Sans Mono&quot;;color:black;background:white">format, …);</span><o:p></o:p></p>
<p class="MsoNormal"><span lang="RU">}<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="RU"><o:p>&nbsp;</o:p></span></p>
<p class="MsoNormal">except for the parameter lists would probably have to be handled via parameter packs.<o:p></o:p></p>
<p class="MsoNormal"><o:p>&nbsp;</o:p></p>
<p class="MsoNormal"><o:p>&nbsp;</o:p></p>
<p class="MsoNormal"><b>From:</b> JeanHeyd Meneide &lt;phdofthehouse@gmail.com&gt; <br>
<b>Sent:</b> Tuesday, July 30, 2019 10:58 AM<br>
<b>To:</b> keld@keldix.com<br>
<b>Cc:</b> Lev Minkovsky &lt;lminkovsky@outlook.com&gt;; unicode@isocpp.open-std.org &lt;unicode@open-std.org&gt;<br>
<b>Subject:</b> Re: [SG16-Unicode] Ideas for the future<o:p></o:p></p>
<p class="MsoNormal"><o:p>&nbsp;</o:p></p>
<div>
<div>
<div>
<p class="MsoNormal">&nbsp;&nbsp;&nbsp;&nbsp; The &quot;hello world&quot; example with lots of languages looks nice to me. That can obviously be a goal of ours, in some form.<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><br>
TL;DR of below: the premise of what the rest of what you're asking for is nice, but requires an insane amount of complexity in the compiler and for the language than is currently needed.<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-bottom:12.0pt"><br>
&nbsp;&nbsp;&nbsp;&nbsp; We already have Unicode identifiers, we are already working on making text like that just work. My only problem with supporting keywords in every language means that you need to carve those keywords out of every single other language as well, reducing
 the amount of valid identifiers in the program by quite a bit for every language. The committee already struggles with adding even context-sensitive keywords to the standard: doing so for all languages, and writing standard library function names, concept
 names, variable names and class names in other languages that make sense and are not just Google Translated specifics will be a herculean effort.<o:p></o:p></p>
</div>
<p class="MsoNormal" style="margin-bottom:12.0pt">&nbsp;&nbsp;&nbsp;&nbsp; Your example is also lacking in examples from other languages: some of those languages are Right-To-Left, rather than Left-To-Right. Do the braces invert and show up on the other side of keywords? Do we
 require that a compiler needs full Bidi processing and localization handling, for each and every program? These are the hard parts of Unicode that aren't just &quot;oh, well the encoding was wrong&quot;, and requiring everyone to be mildly familiar with that so they
 can troubleshoot their programs and fix their compilers is probably not something that flies in the short term. We don't even have a portable &quot;char&quot; right now.<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-bottom:12.0pt">&nbsp;&nbsp;&nbsp;&nbsp; At the moment, achieving language-specific keywords could be done as a translation layer just before the compiler actually grabs the source. That might be a worthwhile endeavor -- and something actually
 programmable in standard C&#43;&#43;, come C&#43;&#43;26 -- that will enable people of different languages to start in their native language when working with C&#43;&#43;. And it could be accommodated in a similar fashion in the Standard itself: &quot;translation&quot; already happens of Unicode
 Characters in your source program to \U-escaped basic character set source blob. The compiler runs (theoretically, compilers are allowed to just skip this if they &quot;understand&quot; the characters anyhow) on this basic character set blob, allowing the processing
 to be portable. This could be one of the things included in that &quot;{language specific keywords} -&gt; basic source character set keywords&quot; conversion.<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">&nbsp;&nbsp;&nbsp;&nbsp; This would be difficult for the standard library, however. We already have severe problems with argument order (memcpy, anyone?): do RTL languages get them in reverse order? The same order? Is the function call on the left or the right
 of the function name? C&#43;&#43; already has a cramped parsing space. I'm all for the non-English speakers having a vastly easier time, but we don't even have Named Parameters in the language to help make this less of a problem for them, let alone parsers capable
 of actually being able to handle more than a find-replace of keywords or function names.<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p>&nbsp;</o:p></p>
</div>
<div>
<p class="MsoNormal">Sincerely,<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">JeanHeyd<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p>&nbsp;</o:p></p>
</div>
</div>
</div>
</body>
</html>