Therefore I don't see a reason why LyX cannot support Urdu. Attached is the patch and a LyX testfile to play with.
The patch also enables Syriac which is another RTL language supported by polyglossia.
regards Uwe
Urdu-Test.lyx
Description: application/lyx
development/FORMAT | 5 +++++ lib/languages | 28 ++++++++++++++-------------- lib/lyx2lyx/lyx_2_3.py | 46 +++++++++++++++++++++++++++++++++++++++++++++- src/tex2lyx/Preamble.cpp | 12 ++++++------ src/version.h | 4 ++-- 5 files changed, 72 insertions(+), 23 deletions(-) diff --git a/development/FORMAT b/development/FORMAT index e615671..36ace3e 100644 --- a/development/FORMAT +++ b/development/FORMAT @@ -11,6 +11,11 @@ adjustments are made to tex2lyx and bugs are fixed in lyx2lyx. ----------------------- +2016-10-23 Uwe Stöhr <uwesto...@web.de> + * Format incremented to 515: support for Urdu and Syriac: + \lang urdu + \lang syriac + 2016-10-22 Uwe Stöhr <uwesto...@web.de> * Format incremented to 514: support for Amharic etc.: \lang amharic diff --git a/lib/languages b/lib/languages index f126e69..fa9019e 100644 --- a/lib/languages +++ b/lib/languages @@ -1064,13 +1064,13 @@ Language swedish End # not supported by babel -#Language syriac -# GuiName "Syriac" -# PolyglossiaName syriac -# Encoding utf8 -# RTL true -# LangCode syr_SY -#End +Language syriac + GuiName "Syriac" + PolyglossiaName syriac + Encoding utf8 + RTL true + LangCode syr_SY +End # not supported by babel Language tamil @@ -1155,13 +1155,13 @@ Language uppersorbian End # not supported by babel -#Language urdu -# GuiName "Urdu" -# PolyglossiaName urdu -# Encoding utf8 -# RTL true -# LangCode ur_PK -#End +Language urdu + GuiName "Urdu" + PolyglossiaName urdu + Encoding utf8 + RTL true + LangCode ur_PK +End # vietnam must be loaded locally with babel options, # not globally via class options, see diff --git a/lib/lyx2lyx/lyx_2_3.py b/lib/lyx2lyx/lyx_2_3.py index 3a1b292..65b5188 100644 --- a/lib/lyx2lyx/lyx_2_3.py +++ b/lib/lyx2lyx/lyx_2_3.py @@ -441,6 +441,48 @@ def revert_khmer(document): "\\end_layout", ""] +def revert_urdu(document): + "Set the document language to English but assure Urdu output" + + if document.language == "urdu": + document.language = "english" + i = find_token(document.header, "\\language urdu", 0) + if i != -1: + document.header[i] = "\\language english" + j = find_token(document.header, "\\language_package default", 0) + if j != -1: + document.header[j] = "\\language_package default" + add_to_preamble(document, ["\\AtBeginDocument{\setotherlanguage{urdu}}"]) + document.body[2 : 2] = ["\\begin_layout Standard", + "\\begin_inset ERT", "status open", "", + "\\begin_layout Plain Layout", "", "", + "\\backslash", + "resetdefaultlanguage{urdu}", + "\\end_layout", "", "\\end_inset", "", "", + "\\end_layout", ""] + + +def revert_syriac(document): + "Set the document language to English but assure Syriac output" + + if document.language == "syriac": + document.language = "english" + i = find_token(document.header, "\\language syriac", 0) + if i != -1: + document.header[i] = "\\language english" + j = find_token(document.header, "\\language_package default", 0) + if j != -1: + document.header[j] = "\\language_package default" + add_to_preamble(document, ["\\AtBeginDocument{\setotherlanguage{syriac}}"]) + document.body[2 : 2] = ["\\begin_layout Standard", + "\\begin_inset ERT", "status open", "", + "\\begin_layout Plain Layout", "", "", + "\\backslash", + "resetdefaultlanguage{syriac}", + "\\end_layout", "", "\\end_inset", "", "", + "\\end_layout", ""] + + ## # Conversion hub # @@ -452,10 +494,12 @@ convert = [ [511, [convert_ibranches]], [512, [convert_beamer_article_styles]], [513, []], - [514, []] + [514, []], + [515, []] ] revert = [ + [514, [revert_urdu, revert_syriac]], [513, [revert_amharic, revert_asturian, revert_kannada, revert_khmer]], [512, [revert_bosnian, revert_friulan, revert_macedonian, revert_piedmontese, revert_romansh]], [511, [revert_beamer_article_styles]], diff --git a/src/tex2lyx/Preamble.cpp b/src/tex2lyx/Preamble.cpp index 99052eb..7d6a07c 100644 --- a/src/tex2lyx/Preamble.cpp +++ b/src/tex2lyx/Preamble.cpp @@ -306,10 +306,10 @@ const char * const Preamble::polyglossia_languages[] = { "lao", "latin", "latvian", "lithuanian", "lsorbian", "magyar", "malayalam", "marathi", "austrian", "newzealand", "german", "norsk", "nynorsk", "occitan", "piedmontese", "polish", "polytonic", "portuges", "romanian", "romansh", "russian", -"samin", "sanskrit", "scottish", "serbian", "slovak", "slovenian", "spanish", "swedish", +"samin", "sanskrit", "scottish", "serbian", "slovak", "slovenian", "spanish", "swedish", "syriac", "tamil", "telugu", "thai", "tibetan", "turkish", "turkmen", -"ukrainian", "usorbian", "vietnamese", "welsh", 0}; -// not yet supported by LyX: "korean", "nko", "syriac", "urdu" +"ukrainian", "urdu", "usorbian", "vietnamese", "welsh", 0}; +// not yet supported by LyX: "korean", "nko" /** * the same as polyglossia_languages with .lyx names @@ -325,10 +325,10 @@ const char * const Preamble::coded_polyglossia_languages[] = { "lao", "latin", "latvian", "lithuanian", "lowersorbian", "magyar", "malayalam", "marathi", "naustrian","newzealand", "ngerman", "norsk", "nynorsk", "occitan", "piedmontese", "polish", "polutonikogreek", "portuges", "romanian", "romansh", "russian", -"samin", "sanskrit", "scottish", "serbian", "slovak", "slovene", "spanish", "swedish", +"samin", "sanskrit", "scottish", "serbian", "slovak", "slovene", "spanish", "swedish", "syriac", "tamil", "telugu", "thai", "tibetan", "turkish", "turkmen", -"ukrainian", "uppersorbian", "vietnamese", "welsh", 0}; -// not yet supported by LyX: "korean-polyglossia", "nko", "syriac", "urdu" +"ukrainian", "urdu", "uppersorbian", "vietnamese", "welsh", 0}; +// not yet supported by LyX: "korean-polyglossia", "nko" bool Preamble::usePolyglossia() const diff --git a/src/version.h b/src/version.h index 69de0ab..46c2ebc 100644 --- a/src/version.h +++ b/src/version.h @@ -32,8 +32,8 @@ extern char const * const lyx_version_info; // Do not remove the comment below, so we get merge conflict in // independent branches. Instead add your own. -#define LYX_FORMAT_LYX 514 // uwestoehr: support for Amharic etc. -#define LYX_FORMAT_TEX2LYX 514 +#define LYX_FORMAT_LYX 515 // uwestoehr: support for Urdu and Syriac +#define LYX_FORMAT_TEX2LYX 515 #if LYX_FORMAT_TEX2LYX != LYX_FORMAT_LYX #ifndef _MSC_VER