From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Original-To: caml-list@sympa.inria.fr Delivered-To: caml-list@sympa.inria.fr Received: from mail2-relais-roc.national.inria.fr (mail2-relais-roc.national.inria.fr [192.134.164.83]) by sympa.inria.fr (Postfix) with ESMTPS id B46D28011D for ; Mon, 10 Apr 2017 15:45:08 +0200 (CEST) Authentication-Results: mail2-smtp-roc.national.inria.fr; spf=None smtp.pra=zhenya1007@gmail.com; spf=Pass smtp.mailfrom=zhenya1007@gmail.com; spf=None smtp.helo=postmaster@mail-qk0-f174.google.com Received-SPF: None (mail2-smtp-roc.national.inria.fr: no sender authenticity information available from domain of zhenya1007@gmail.com) identity=pra; client-ip=209.85.220.174; receiver=mail2-smtp-roc.national.inria.fr; envelope-from="zhenya1007@gmail.com"; x-sender="zhenya1007@gmail.com"; x-conformance=sidf_compatible Received-SPF: Pass (mail2-smtp-roc.national.inria.fr: domain of zhenya1007@gmail.com designates 209.85.220.174 as permitted sender) identity=mailfrom; client-ip=209.85.220.174; receiver=mail2-smtp-roc.national.inria.fr; envelope-from="zhenya1007@gmail.com"; x-sender="zhenya1007@gmail.com"; x-conformance=sidf_compatible; x-record-type="v=spf1" Received-SPF: None (mail2-smtp-roc.national.inria.fr: no sender authenticity information available from domain of postmaster@mail-qk0-f174.google.com) identity=helo; client-ip=209.85.220.174; receiver=mail2-smtp-roc.national.inria.fr; envelope-from="zhenya1007@gmail.com"; x-sender="postmaster@mail-qk0-f174.google.com"; x-conformance=sidf_compatible IronPort-PHdr: =?us-ascii?q?9a23=3Aoj6XhBOUNygiLl/ma1gl6mtUPXoX/o7sNwtQ0KIM?= =?us-ascii?q?zox0IvvyrarrMEGX3/hxlliBBdydsKMYzbKO+4nbGkU4qa6bt34DdJEeHzQksu?= =?us-ascii?q?4x2zIaPcieFEfgJ+TrZSFpVO5LVVti4m3peRMNQJW2aFLduGC94iAPERvjKwV1?= =?us-ascii?q?Ov71GonPhMiryuy+4ZPebgFHiTanfb9+MAi9oBnMuMURnYZsMLs6xAHTontPde?= =?us-ascii?q?RWxGdoKkyWkh3h+Mq+/4Nt/jpJtf45+MFOTav1f6IjTbxFFzsmKHw65NfqtRbY?= =?us-ascii?q?UwSC4GYXX3gMnRpJBwjF6wz6Xov0vyDnuOdxxDWWMMvrRr0vRz+s87lkRwPpiC?= =?us-ascii?q?cfNj427mfXitBrjKlGpB6tvgFzz5LIbI2QMvdxeb7Tfc4BRWpZQMleSzBBDI27?= =?us-ascii?q?b4sKFeUBPOBYpJT5q1YBqRayAA+hD/7txDBVnH/7xa810+ohHw/I3wIuAswAv2?= =?us-ascii?q?jPodrvKKsfS/q4wLXUwTjBaf5dxDfz6JLPchAkufyCUqxwccXPxkkpFwLOk0me?= =?us-ascii?q?qYv4PzyO1+QNtXSU7+p8Ve2xim4nrRx6rz+ux8cslIbJgIIUxUrZ+Sll3Io4J8?= =?us-ascii?q?a1SEF+YdG+EZtQszuWOJdxQsMnWmxlvjsxxLMBuZ6+ZicKyZInygbea/yBaYiI?= =?us-ascii?q?4wjsWPyfITdinH5keKiwhxa18Uin0OHzSs600FNSoitFitnArGwN1xvV58OaSf?= =?us-ascii?q?V95l+s1SiT2w3X8O1JIkA5mbDFJ5I/3rI8jIcfvEbMEyLwhU74lrWZdl8+9eit?= =?us-ascii?q?8+nnYqvpppubN4JsjwHxKKUumsimDeQhMQgCQ3GX+eqh2LDh8kD1WrpKjvoxkq?= =?us-ascii?q?nWtJDVO94XqbK+Aw9Qyooj6hC/ACm60NkAg3ULMFZIdAiEgoXpIV3CPu70Aeul?= =?us-ascii?q?j1ixkjpmyOjKPrj7DZXMKnjDnq3hfbF460NEyQszzc5Q55RUC74bPf7/RlP9ud?= =?us-ascii?q?7DAx82Ngy72efnCNFn2owCXmKPB7eVMLnOvl+Q+uIvP+6MaZcJtznnLvgl4+fi?= =?us-ascii?q?jXs4mV8GYamkxoAXaXC9HvR+OUqVe3vsgtEbEWcLpAUyVuLqiEfRGQJUMkq7WO?= =?us-ascii?q?oH+jw6DsryEY7EXZyggbqp0yKyH5kQbWdDXAOiC3DtIqiaVPoKeWqoJdJrkzoP?= =?us-ascii?q?VaSsSolpgQOuuQnrwuM/drX89SgRtJal399wsb6A3Sou/CB5WpzOm1qGSHt5yy?= =?us-ascii?q?ZVHjI=3D?= X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: =?us-ascii?q?A0C0AAD6i+tYhq7cVdFdGgEBAQECAQEBA?= =?us-ascii?q?QgBAQEBFgEBAQMBAQEJAQEBhAl5EgeDX5tZgjqKd4gmgg8shXgCg1UHQBcBAQE?= =?us-ascii?q?BAQEBAQEBARIBAQEICwsIKC+CMyKCQAEBAQECASMdARsSCwEDAQsGAwILDQ0dA?= =?us-ascii?q?gIhAQERAQUBChIGExKJZAEDCAUIDoshkRo/jASCBAUBHIMJBYNRChknAwpVglg?= =?us-ascii?q?BAQEBAQEEAQEBAQEBARkCBhKKJYEJglElgUMBAUiCWYJfBYErAQEBhhsMlGshE?= =?us-ascii?q?AgBAYE+CYU5hxyEPYF/VYRZg1qGOosAhzgUH4EVDxEBgTtbVhhQgzoqH4ILJDW?= =?us-ascii?q?HMYIuAQEB?= X-IPAS-Result: =?us-ascii?q?A0C0AAD6i+tYhq7cVdFdGgEBAQECAQEBAQgBAQEBFgEBAQM?= =?us-ascii?q?BAQEJAQEBhAl5EgeDX5tZgjqKd4gmgg8shXgCg1UHQBcBAQEBAQEBAQEBARIBA?= =?us-ascii?q?QEICwsIKC+CMyKCQAEBAQECASMdARsSCwEDAQsGAwILDQ0dAgIhAQERAQUBChI?= =?us-ascii?q?GExKJZAEDCAUIDoshkRo/jASCBAUBHIMJBYNRChknAwpVglgBAQEBAQEEAQEBA?= =?us-ascii?q?QEBARkCBhKKJYEJglElgUMBAUiCWYJfBYErAQEBhhsMlGshEAgBAYE+CYU5hxy?= =?us-ascii?q?EPYF/VYRZg1qGOosAhzgUH4EVDxEBgTtbVhhQgzoqH4ILJDWHMYIuAQEB?= X-IronPort-AV: E=Sophos;i="5.37,182,1488841200"; d="scan'208,217";a="268497104" Received: from mail-qk0-f174.google.com ([209.85.220.174]) by mail2-smtp-roc.national.inria.fr with ESMTP/TLS/AES128-GCM-SHA256; 10 Apr 2017 15:45:07 +0200 Received: by mail-qk0-f174.google.com with SMTP id f133so94418956qke.2 for ; Mon, 10 Apr 2017 06:45:07 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:in-reply-to:references:from:date:message-id:subject:to :cc; bh=5DJAyInFHR8QYO0WzhU4DafLyGW99017Uu/FjWVH17w=; b=PI+Tt6z59EWcQXRRDIEEHf0Y0Pvys9ahWD0BQsc3wU+jLec7huDn4Og7LdsicXxhq4 8sbcQnYCCgrA8MiFClH2S74QIRM4QyaJPdmKqBu25m7d7EgBX8Emg6CExEwlulaf4EoP 8rdiBAME/c5afVrR6itnpMJnnmRPpTNQa5AO7TRk9lDEEXVgiungiIcRc1LOM/lzR/D+ Vqfi8DCcLQPNCWdw3Yrc6Izz/93f/299SdQ1GpRKRRSeGEb1iCGb9VJcKjJu2wFK1yk8 LDT7BmRyxC23D8InhVAEv2mED2UY0ups57l1pyJGRKHLRAaa6sd3dbla/kx81ooggLIw TtdQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:in-reply-to:references:from:date :message-id:subject:to:cc; bh=5DJAyInFHR8QYO0WzhU4DafLyGW99017Uu/FjWVH17w=; b=NmQt3b3uXgHP5D11D2G2TSuQeQJUkpptSIF6oINUktLvV2nnez9Z6b/uL0499hPFZR nG0Sl1zDSNhqL/bLkV0WOHbQQmEXwBsZ5ciOb+gaX/e2MHP2PTcIVjg2ZiBTNJb3++Ci Zhh3VRHNhgG0rN8aO1aqgR07w9UDmhwBF1YYUqaAu06QzNqfKvHqK48awehgFGzppr18 RMDO6G+8qN2nrbfg/bvR8J72dKnruWeDuIsaEKjCC5cCYMJnHC1VtjcIymtNVAIjFNKk GOoN7WOgWCBeLch1p04dlD8dlsGFhT7/+Sgs2iXPKUtE0WBwNRWNOqLZ/1WqefiHxRNp JBmA== X-Gm-Message-State: AN3rC/63rUs6xovzhrDvNO9sCLkMivqOCtWs2k+VQSoMqj8wVsfe1yfp9EnwWYN4IMFHCQGaXI/u/UitvOxJ2w== X-Received: by 10.13.212.213 with SMTP id w204mr2859553ywd.224.1491831906414; Mon, 10 Apr 2017 06:45:06 -0700 (PDT) MIME-Version: 1.0 Received: by 10.37.172.194 with HTTP; Mon, 10 Apr 2017 06:45:05 -0700 (PDT) In-Reply-To: References: <1715c9d9-04d7-3368-bfbd-3af8aae4698b@inria.fr> <20170408165106.55n6zfwd3tsdxxgw@pema> <8261755f-fb74-c363-a764-08623c06ce3a@inria.fr> <20170409195059.GA3385@notk.org> <20170410060741.10271.10E692AB@matica.foolinux.mooo.com> From: Evgeny Roubinchtein Date: Mon, 10 Apr 2017 09:45:05 -0400 Message-ID: To: Tao Stein Cc: OCaml Mailing List Content-Type: multipart/alternative; boundary=001a114fcc76d8d248054cd02e85 Subject: Re: [Caml-list] error messages in multiple languages ? --001a114fcc76d8d248054cd02e85 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable > With one file it's easy to see all the translations for a string at once, to ensure consistency. Aren't you making an implicit assumption that a single person is able to read all the languages? If so, is that a good assumption? I would argue that it isn't. Besides, bringing together several translations could conceivably be done with tooling built on top of gettext. One more observation is that, if all translations are in one file, then there needs to be a single text encoding that encodes all those languages. Yes, I do know about Unicode, but I also know that people may still wish to use other encodings as a matter of habit, local convention, or even perceived problems with Unicode (Han unification comes to mind, but there may be other issues, for example different languages being best served by different normalization forms). --=20 Best, Zhenya On Mon, Apr 10, 2017 at 9:20 AM, Tao Stein wrote: > > Would people have concerns creating a compiler build dependency on > libgettext ? > > Another concern is that xgettext seems to lack an OCaml back-end. > > Also, there may be some advantages to having all the language strings > together in one file, as in the 1997 Caml Light implementation Xavier > shared. As opposed to the many .po files of a typical gettext workflow. > With one file it's easy to see all the translations for a string at once, > to ensure consistency. The gettext workflow, though somewhat complex, may > be more scalable. Though it's not clear to me paying for the scalability > with the additional complexity is worth it in this case. I'm undecided. > > In terms of gettext versus catgets, some more knowledgeable people may > have better opinions. Searching around a bit, it seems that gettext is us= ed > more often in open-source projects. > > Tao Stein / =E7=9F=B3=E6=B6=9B / =D8=AA=D8=A7=D9=88 =D8=B4=D8=AA=D8=A7=D9= =8A=D9=86 > > On 10 April 2017 at 14:14, Ian Zimmerman wrote: > >> On 2017-04-09 21:50, Adrien Nader wrote: >> >> > Unsurprisingly, pretty much everyone uses gettext rather than catgets. >> > >> > Personally I've enjoyed using gettext and I've found that it provided >> > the features needed for a proper translation in a pretty good way. >> >> The one problem with gettext (which catgets lacks) is that it relies on >> a piece of global data (the "text domain binding"). This makes any way >> to handle translations in a shared library somewhat distasteful. >> >> Admittedly one can wave the problem away by relying on the default >> binding established when glibc or libintl is installed, and never >> calling bindtextdomain(). >> >> -- >> Please *no* private Cc: on mailing lists and newsgroups >> Personal signed mail: please _encrypt_ and sign >> Don't clear-text sign: http://cr.yp.to/smtp/8bitmime.html >> >> -- >> Caml-list mailing list. Subscription management and archives: >> https://sympa.inria.fr/sympa/arc/caml-list >> Beginner's list: http://groups.yahoo.com/group/ocaml_beginners >> Bug reports: http://caml.inria.fr/bin/caml-bugs >> > > --001a114fcc76d8d248054cd02e85 Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: quoted-printable
> With one file it's easy to see all the trans= lations for a string at once, to ensure consistency.

Aren= 't you making an implicit assumption that a single person is able to re= ad all the languages?=C2=A0 If so, is that a good assumption?=C2=A0 I would= argue that it isn't.=C2=A0 Besides, bringing together several translat= ions could conceivably be done with tooling built on top of gettext.=C2=A0 = One more observation is that, if all translations are in one file, then the= re needs to be a single text encoding that encodes all those languages.=C2= =A0 Yes, I do know about Unicode, but I also know that people may still wis= h to use other encodings as a matter of habit, local convention, or even pe= rceived problems with Unicode (Han unification comes to mind, but there may= be other issues, for example different languages being best served by diff= erent normalization forms).

--
Best,
Zhenya

On Mon, Apr 10, 2017 at 9:20 AM, Tao Stein = <taostein@gmail.= com> wrote:

Would people have concerns creating a compiler build dependency = on libgettext ?

Another concern is that xgettext seems to lack an OCaml back-end.=

Also,= there may be some advantages to having all the language strings together i= n one file, as in the 1997 Caml Light implementation Xavier shared. As oppo= sed to the many .po files of a typical gettext workflow. With one file it&#= 39;s easy to see all the translations for a string at once, to ensure consi= stency. The gettext workflow, though somewhat complex, may be more scalable= . Though it's not clear to me paying for the scalability with the addit= ional complexity is worth it in this case. I'm undecided.

In terms of gettext= versus catgets, some more knowledgeable people may have better opinions. S= earching around a bit, it seems that gettext is used more often in open-sou= rce projects.

Tao Stein / =E7=9F=B3=E6=B6=9B /=C2=A0=D8=AA=D8=A7=D9=88 =D8=B4=D8=AA=D8=A7=D9=8A=D9=86

On 10 April 20= 17 at 14:14, Ian Zimmerman <itz@primate.net> wrote:
On 2017-04-09 21:50, Adrien Nader wrote:

> Unsurprisingly, pretty much everyone uses gettext rather than catgets.=
>
> Personally I've enjoyed using gettext and I've found that it p= rovided
> the features needed for a proper translation in a pretty good way.

The one problem with gettext (which catgets lacks) is that it relies= on
a piece of global data (the "text domain binding").=C2=A0 This ma= kes any way
to handle translations in a shared library somewhat distasteful.

Admittedly one can wave the problem away by relying on the default
binding established when glibc or libintl is installed, and never
calling bindtextdomain().

--
Please *no* private Cc: on mailing lists and newsgroups
Personal signed mail: please _encrypt_ and sign
Don't clear-text sign: http://cr.yp.to/smtp/8bitmime.html=

--
Caml-list mailing list.=C2=A0 Subscription management and archives:
https://sympa.inria.fr/sympa/arc/caml-list
Beginner's list: http://groups.yahoo.com/group/ocaml_beginners
Bug reports: http://caml.inria.fr/bin/caml-bugs


--001a114fcc76d8d248054cd02e85--