Re: Is rst2odt -l cs supposed to work?
Dave Kuhlman <[email protected]>
| Newsgroups | gmane.text.docutils.user |
|---|---|
| Message-ID | <[email protected]> |
Günter,
I did the following:
1. Merged your changes (patch file below) into my local repository.
2. Did a bit of testing. I had an exception when a document
contained an admonition. I fixed that.
3. Committed these changes to the central repository.
Thank you for your help with this. Let me know if/when there is
something more I can do.
Dave K
On Thu, May 18, 2017 at 07:42:35PM +0000, Guenter Milde wrote:
> Dear Dave,
>
> On 2017-05-16, Dave Kuhlman wrote:
>
> > I did the commit.
>
> > And, before I did so, I took Matěj's suggestion about using
> > ``locale.normalize(lang), so now you can use::
>
> > $ rst2odt.py -l cs somedoc.txt somedoc.odt
> > $ rst2odt.py -l es somedoc.txt somedoc.odt
>
> > to get Czech and Spanish (Spain).
>
> Fine.
>
> > And, of course, you can override the region, for example::
>
> > $ rst2odt.py -l cs-GB somedoc.txt somedoc.odt
> > $ rst2odt.py -l es-mx somedoc.txt somedoc.odt
>
> > to get British English and Mexican Spanish.
>
>
> I suggest the patch below to allow for BCP 47 tags like
>
> de-Latf-AT # second tag is script, region in 3rd position
> de-latf # second tag is script, no region given
> de-1901 # second tag is variant (here: spelling), no region given
>
>
> Further changes:
>
> The RuntimeError if locale.normalize fails to find a region tag is
> replaced with a Warning: a missing region tag does not prevent export
> of a functional output document.
>
> The RuntimeError for empty "self.visitor.language_code" is removed on the
> assumption that if a user calls ``--language=""``, this indicates that no
> language should be written into the output --- which is exactly what happens
> in this case.
>
> From the function "languages.normalize_language_tag()", we only need the
> replacement of "_" by "-". This is better done with a string method.
>
>
> Günter
>
>
> Dir: /home/milde/Code/Python/docutils-svn/docutils/docutils/writers/odf_odt/
>
> Index: __init__.py
> ===================================================================
> --- __init__.py (Revision 8069)
> +++ __init__.py (Arbeitskopie)
> @@ -572,38 +572,35 @@
> s1 = self.get_stylesheet()
> # Set default language in document to be generated.
> # Language is specified by the -l/--language command line option.
> - # Allowed values are "ll", "ll-rr" or "ll_rr", where ll is language
> - # and rr is region. If region is omitted, we use
> + # The format is described in BCP 47. If region is omitted, we use
> # local.normalize(ll) to obtain a region.
> language_code = None
> region_code = None
> - if len(self.visitor.normalized_language_code) > 0:
> - language_ids = self.visitor.normalized_language_code[0].split('-')
> - if len(language_ids) == 2:
> - language_code = language_ids[0]
> - region_code = language_ids[1]
> - elif len(language_ids) == 1:
> - language_code = language_ids[0]
> + if self.visitor.language_code:
> + language_ids = self.visitor.language_code.replace('_','-')
> + language_ids = language_ids.split('-')
> + # first tag is primary language tag
> + language_code = language_ids[0].lower()
> + # 2-letter region subtag may follow in 2nd or 3rd position
> + for subtag in language_ids[1:]:
> + if len(subtag) == 2 and subtag.isalpha():
> + region_code = subtag.upper()
> + break
> + elif len(subtag) == 1:
> + break # 1-letter tag is never before valid region tag
> + if region_code is None:
> rcode = locale.normalize(language_code)
> rcode = rcode.split('_')
> if len(rcode) > 1:
> - rcode = rcode[1]
> - rcode = rcode.split('.')
> - if len(rcode) >= 1:
> - region_code = rcode[0]
> + rcode = rcode[1].split('.')
> + region_code = rcode[0]
> if region_code is None:
> - raise RuntimeError(
> + self.document.reporter.warning(
> 'invalid language-region. '
> 'Could not find region with locale.normalize(). '
> 'If language is supplied, then you must specify '
> - 'both lanauge and region (ll-rr). Examples: '
> - 'es-mx (Spanish, Mexico), en-au (English, Australia).')
> - else:
> - raise RuntimeError(
> - 'invalid language-region. '
> - 'Format must be "ll-rr" or "ll_rr", where ll is language '
> - 'and rr is region. '
> - 'See https://en.wikipedia.org/wiki/IETF_language_tag')
> + 'both language and region (ll-RR). Examples: '
> + 'es-MX (Spanish, Mexico), en-AU (English, Australia).')
> # Update the style ElementTree with the language and region.
> # Note that we keep a reference to the modified node because
> # it is possible that ElementTree will throw away the Python
> @@ -888,8 +885,6 @@
> self.language = languages.get_language(
> self.language_code,
> document.reporter)
> - self.normalized_language_code = languages.normalize_language_tag(
> - self.language_code)
> self.format_map = {}
> if self.settings.odf_config_file:
> from ConfigParser import ConfigParser
>
>
>
> ------------------------------------------------------------------------------
> Check out the vibrant tech community on one of the world's most
> engaging tech sites, Slashdot.org! http://sdm.link/slashdot
> _______________________________________________
> Docutils-users mailing list
> [email protected]
> https://lists.sourceforge.net/lists/listinfo/docutils-users
>
> Please use "Reply All" to reply to the list.
--
Dave Kuhlman
http://www.davekuhlman.org
------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot
_______________________________________________
Docutils-users mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/docutils-users
Please use "Reply All" to reply to the list.