Those dumb smart quotes…

#01Since Studio 2014 was launched it’s been interesting to see what some users were waiting for.  Did they want the Quickmerge, Alignment, AutoSave, improved navigation, blistering speed, automatic concordance search, improved filters, enhanced locking functionality, custom TM user ID, improvements to the term recognition threshold, more options in the display filter, auto-substitution for acronyms and a host of other improvements?  No… and I genuinely don’t mean this in a mean way… it seems for some users an easier way to handle typographical quotes is the order of the day and this hasn’t radically changed since TagEditor.
I’m sure I don’t have to go into detail on what these are, but basically when you type into a segment and use quotation marks your computer is probably going to use straight quotes like this, often referred to as “dumb” quotes:
#06

When what’s normally preferred is this, often referred to as “smart’ quotes:
#07

So how do you handle these in Studio?  I thought it was worth a quick article to show you how using three different methods:

  1. QuickInserts
  2. Search & Replace
  3. AutoHotkey

Let’s start with QuickInserts.

QuickInserts

Studio has the concept of QuickInserts which are a mechanism for being able to add characters, text, symbols or tags into your translation as you work as placeables or tag pairs.  You can read more on these in the product help here:
About customising the QuickInsert Group
The basic idea is that you have a button on the toolbar that when clicked, or when you use a keyboard shortcut for it, will insert the items you wish.  Each filetype requires it’s own QuickInserts because not all filetypes support the same type of things you may add in there.  For example, you may decide to add tags that represent the code to control something in an XML file and this may cause a problem if you used this in an IDML or another type of XML document for example.
In addition, some filetypes already come with some QuickInserts built in.  So if I look at a QuickInsert Group for a Word file I see this:
#02
So this already has QuickInserts for two types of quotes built in and the one I’m hovering over is the smart quotes.  Note that there is a keyboard shortcut for this as well, Ctrl+Shift+6.
If I open an IDML or XML file for example then you’ll find that these smart quotes are not there.  So you would have to add them.  To do this you open the Filetypes Options, choose the appropriate filetype and then QuickInsert.  In this image below you can see where I have already added one for the smart quotes:
#04
The editing window for this is very simple and looks like this, where the only choice you really have is to decide whether you want this to be a placeable or a tag pair and whether you want it on the toolbar or not.  I’ve chosen a tag pair which means I can insert both quotes together and type my text between as I translate… or I can highlight the word and then press the QuickInsert to have the smart quotes added either side of the highlighted word:
#03
Once I’ve added it my QuickInsert Group for an IDML file looks like this:
#05
The important thing to note here is that I once again have a keyboard shortcut, but note that it’s now different to the one I have for Word… this time it’s Ctrl+Shift+4.  So this means I’d have to either remember different shortcuts for each filetype, or use the mouse.
So using QuickInserts for something that you may have to use a lot in different filetypes may not be the most attractive option.  If you work mainly in one or two formats then it could be the easiest method for you.
One other important point to note about using QuickInserts is that if the file has been prepared for you already, so you receive the SDLXLIFF or a Project package, and the person who prepared the file for you did not add smart quotes to their filetype before preparing the work then you will have to add them again in Project Settings even if you already have them in your own filetypes.

Search & Replace

This solution, whilst a little geeky, has its merits.  If you receive a bilingual SDLXLIFF file, or Studio package that has already been translated and you are asked to review it then you may have to deal with the situation where dumb quotes have been used instead of smart quotes.  In this case it may be easier to search and replace the quotes in one go rather than painfully replace them all one at a time.
Using a text based search and replace this would not be possible because the opening and closing quotes are different… or at least you’d have to do two runs.  One to find a space followed by a dumb quote and then replace this with a space followed by an opening quote.  Then you search for a dumb quote followed by a space or some other punctuation and replace it with a closing quote.
But a more elegant solution is to use regular expressions.  So you can search for this:

(\s)"(.+?)"

And then replace with this:

$1“$2”

The expression itself is not too complicated.  The search looks for a space followed by a dumb quote and stores the space in a the first back reference.  Then it does a “lazy” search for anything apart from a line break until it reaches the closing dumb quote and stores what it finds (the words between the quotes) in the second back reference.
The replace recalls the first back reference and adds the opening smart quote.  Then recalls the second back reference and adds the closing smart quote.
But you can check out this article for an explanation of how you use search and replace regular expressions in Studio:
Search and replace with Regex in Studio – Regular Expressions Part 3

AutoHotkey

This is actually my personal favourite solution to this issue.  I like this best of all because this allows me to use typographical quotes wherever I am writing, and not just in Word or Studio.  You may have read this article I wrote called AutoCorrect… for everything! which explains how to use AutoHotkey so you can have your Word autocorrect lists available for you in Studio, or anywhere else.  If you did, and if you implemented it, then you’re half way there already.
All you need to do is add a couple of lines to the script you already have:

;----------------------------------------------------
; Replace dumb quotes with smart quotes as you type.
;----------------------------------------------------
:*?:" ::
Send ”%A_Space%
Return
:*?: ":: “

This is a simple script that uses regex to simply replace a dumb quote before a space with the closing smart quote, and a dumb quote after a space with an opening smart quote as you type.  So it’s a little like the autocorrect in Word except it works everywhere.  I thought a short video would be useful here so you can see how this works in practice as it may encourage you to have a go… and I showed all three methods in a couple of minutes.

So I really like this solution because it’s yet another place where you can see how useful learning a little about regular expressions can be, and because it provides a solution to the dumb smart quote issue that can be used in any application that supports typographical quotes!
So I hope this is a useful article for anyone wondering how to deal with smart quotes in Studio or anywhere else.

49 thoughts on “Those dumb smart quotes…

  1. Funny, I was just thinking yesterday how useful it would be if only Trados Studio handled quotes in a way that mixes Word’s and PSPad’s approaches. In Word, you just type regular dumb quotes, and they get replaced with smart quotes, as long as you have the relevant setting on. In PSPad, you type one dumb quote, a second one is automatically entered for you, and the cursor stays between them for you to type what’s inside the quote.
    Now, if only Trados Studio would a) allow you to choose what quotes you prefer to use (both project- and settings-wise), and b) type the closing quote for you… That would be a huge time saver. Of course, there are exceptions when you do not want this to happen, such as with inches (PSPad treats starting a quote without a space first as an exception). Or when nesting quotes, as in Spanish we use first «», then “” and only then ʼʽ (in my texts, this very rarely happens). But all in all, mixing Word’s and PSPad’s approaches would be awesome.
    Since I heartily dislike QuickInserts (for the reasons you mention), I prefer not to run ad-hoc regex S&R (I would need macros to avoid repetition), and I find AutoHotkey too time-consuming, I simply use Type It Easy, a software that lets you EASILY create additional keyboard layouts that work in all of Windows.

    1. Nice… I haven’t seen this one, although there are many like this… I think Phrase Express and AceText do similar things. I think I still prefer AHK for this though because I don’t need a shortcut at all… it works just like AutoCorrect in Word. But as a tool for providing consistent keyboard shortcuts for different types of typographical characters Type It Easy looks good.

    2. For the preferred Spanish quotes «», the AutoHotkey script would be like this:
      ;—————————————————-
      ; Replace dumb quotes with double angle quotes as you type.
      ;—————————————————-
      :*?:” ::
      Send »%A_Space%
      Return
      :*?: “:: «
      Return
      ;—————————————————-
      I’ll probably coding also a simple script and dialog box (both in AutoHotkey) to quickly change the quote I need to use (dumb, smart, or double angle quote).
      Thanks for the script, Paul, we were just using the default straight quotes in Studio because there wasn’t an easy way to to type or convert them!
      Regards,
      … Jesús Prieto …

  2. Some quotes on the quickinsert tab for the docx format are indeed dumb. There is a pair of quotes which could be useful for Polish but, the upper closing one is the other way round, i.e. it is „“ and should be „” for Polish. Fortunately Polish users can use the marvellous keyboard driver called Akcent which is free and has the Polish smart quotes built in. By the way, can the out-of-the-box quickinsert buttons be removed, if I have no use for some of them?

  3. In the same vein I’d also ask for a “geeky” way to enter special characters, available in MS Word, i.e. you type the hex code directly in Word, press Alt+X and presto/voila! the special character appears. Is anything like that planned for Studio?

  4. Excellent solutions. Upon experimentation with Studio 2011 and Greek/French quotes («»), I could add the tag pair in quick insert; however, strange things happened.
    1. When adding the QuickInsert tag through Tools >Options > File Type it would not be listed when clicking the QuickInsert settings icon on QuickInsert menu and vice versa (as if these were two different functions altogether).
    2. Although I had selected “Display on Toolbar” it was not displayed. Had it been displayed, I would have also wanted to assign a shortcut to it (no such option appears).

  5. Excellent post, as always. I also love Autohotkey and the elegant solution described here,
    However, when quotes need to be changed afterwards, for example when a reviewer has to change straight quotes into smart ones to comply with guidelines, etc, the regex search and replace approach is really convenient.
    The only risk I see is with tags (formatting and non-formatting). The find regex might be greedy enough to include tags that are not reinserted back, or at least this is what I noticed.
    You might have a case like this:
    For more information see Tag“Excellent post by Paul Filkin on dumb/smart quotes”Tag.
    After search and replace you might have:
    For more information see “Excellent post by Paul Filkin on dumb/smart quotes”GhosttagTag.
    Smart quotes but with a zombie opening tag.
    This is the case where I tested more consistent results. In other similar cases, like:
    For more information see “Excellent post by Paul Filkin on dumb/smart quotes”.
    I had intermittent results, for example with non-formatting tags the regex doesn’t match (when both tags are inside the dumb quotes).
    Or tags might be removed in similar occurrences.
    Is there any way to make the regex tag conscious?

  6. Another great option, inline with the AHK concept described by Paul, is to use a text expansion software such as Breevy (http://www.16software.com/breevy; my personal favorite) or PhraseExpress (http://www.phraseexpress.com/) for Windows, both (and others) work similar to the quite renowned TextExpander: on the Mac. Both are not free, but well worth the investment if used often, and are very easy to set up and use for those who are a bit deterred by scripting.
    Not only that one can define “abbreviations” to shorthand canned responses, insert special characters and other repetitive typing tasks, they can both import Word’s AutoCorrect dictionaries and used as a system-wide AutoCorrect-text expansion/replacement tool.

  7. Hi Paul,
    I’ve tried your suggestion of using AutoHotkey to remedy the QuickInsert shortcomings. I’ve found a way to automatically replace the single straight quote with a single curly quote to obtain a “real” apostrophe:
    ;——————————————————————————
    ; Apostrophe
    ;——————————————————————————
    :*?:'::’
    But the problem with this is that it would interfere with adopting the solution you suggest to have “smart” open and close single quotes.
    Do you have a AHK suggestion for replacing a single straight quote with an apostrophe, but a pair of them with the appropriate open and close single smart quotes?

    1. I’ll have a play when I get a few mins… but in the meantime I wonder if the order you have these added in AHK plays a part. I have as follows and all three work fine.
      ;——————————————————————————
      ; Replace dumb quotes with smart quotes as you type.
      ;——————————————————————————
      :*?:" ::
      Send ”%A_Space%
      Return
      :*?: ":: “
      ;——————————————————————————
      ; Replace dumb single quotes with smart single quotes as you type.
      ;——————————————————————————
      :*?:' ::
      Send ’%A_Space%
      Return
      :*?: ':: ‘
      ;——————————————————————————
      ; Apostrophe
      ;——————————————————————————
      :*?:'::’

      1. Hi Paul, this works, for single quotes, double, and the apostrophe – so long (for the quotes) one uses the American convention of closing the quotes after the punctuation “like this.” Unfortunately, when we put the punctuation after the closing quotes “like this”, the closing quote remains a straight (not curly) quote.
        Now, to make it perfect – any suggestion on how to modify this macro to handle closing quotes followed by a punctuation mark?

    2. About your question: “Now, to make it perfect – any suggestion on how to modify this macro to handle closing quotes followed by a punctuation mark?” (it looks I can only answer here):
      Try this script for the closing quotes:
      :?:”::»
      Return
      And leave unchanged the starting ones:
      :*?: “:: «
      Return

      1. Nice solution Jesús. I actually asked for help on the AHK forum because I can’t solve this completely myself. If you start a new line with quotes then the opening quote won’t change. I’m sure it’s a simple thing… but at least you solved the requirement from Riccardo. Thanks.

      2. Hi Paul,
        This script will make it:
        ;————————————————————————————
        ; Replace dumb quotes using a boolean variable
        ; First quote entered will be the starting quote, next the closing, next the starting, and so on…
        ; If the quote is not the intended one, just delete it and press again the key “. The new entered will be fine…
        ;————————————————————————————
        :*?:”::
        if (finalQuotes=false)
        {
        Send »
        finalQuotes:=true
        }
        else
        {
        Send «
        finalQuotes:=false
        }
        Return

        1. Very clever… clearly I have a lot to learn here! I redid it for the dumb/smart quotes discussed as follows:
          ;——————————————————————————
          ; Replace dumb quotes using a boolean variable
          ; First quote entered will be the starting quote, next the closing, next the starting, and so on…
          ; If the quote is not the intended one, just delete it and press again the key “. The new entered will be fine…
          ;——————————————————————————
          :*?:"::
          if (finalQuotes=false)
          {
          Send ”
          finalQuotes:=true
          }
          else
          {
          Send “
          finalQuotes:=false
          }
          Return
          Thanks Jesús, this is very helpful for us mere mortals!

  8. Hi Paul, thanks for the tip! I tried to add single quotes too (with the script below), but have run into a problem. Now all things like: Michael’s … become: Michael‘s (instead of Michael’s)
    Any idea how to edit the script? I think what needs to be done is change the part of the script that converts a single straight quote in a word like: Michael’s … into a curly one, so that it doesn’t do anything if the quote is inside of a word. Any clever ideas?
    ;——————————————————————————
    ; Replace dumb quotes using a boolean variable
    ; First quote entered will be the starting quote, next the closing, next the starting, and so on…
    ; If the quote is not the intended one, just delete it and press again the key “. The new entered will be fine…
    ;——————————————————————————
    :*?:”::
    if (finalQuotes=false)
    {
    Send ”
    finalQuotes:=true
    }
    else
    {
    Send “
    finalQuotes:=false
    }
    Return
    ;——————————————————————————
    :*?:’::
    if (finalQuotes=false)
    {
    Send ’
    finalQuotes:=true
    }
    else
    {
    Send ‘
    finalQuotes:=false
    }
    Return
    ——————————————————

    1. Hi Michael, can you use something simple like this?
      ;——————————————————————————
      ; Replace dumb apostrophe
      ;——————————————————————————
      :*?:’::
      Send ’
      Return

  9. Hi Paul, you helped me a lot with this article. I’ve used search & replace with regular expressions in order to replace all dumb quotes in one go. There’s just one small problem left (for me at least, as I’m not smart enough to alter the regular expression accordingly): I was able to look for quotes without a space in front of them (for example quotes in brackets etc.), but how to replace them? Would you mind providing me with a solution for the right expression to use instead of “$1“$2””? Thanks a lot!

      1. I’m searching for expressions like (“word”) and would like to replace the dumb quotes in such expressions by smart quotes. The reg ex you provided isn’t able to find and replace them since it is looking for quoted words surrounded by spaces. I have a text that is full of quoted words in brackets and would be extremely thankful if you could share a solution which is as smart as the one in your example:)

        1. ok – I get it. Your problem is that the brackets need to be escaped as they have a special meaning when you search with regular expressions. You escape by putting a backslash before the bracket and then it can find the exact character you need. So try searching for this:
          (“(w+)”)
          Then replace with this:
          (“$1”)
          Works nicely on my test file 🙂

      2. Thank you Paul. This one unfortunately didn’t work on my file, but maybe that is my mistake. Another, similar problem occurs with quoted words at the beginning of sentences, because in Trados segments the space between the fullstop of one sentence (=segment) and the first letter of the next sentence (=next segment) doesn’t appear. For example:
        This is the first sentence. “This word” is the beginning of the second sentence.
        Your above solution won’t find “This word”, because in a Trados segment it is not preceded by a space. I hope you’re getting what I mean. Do you have any idea how to find & replace this? Having a solution for these two cases would speed up my review of this huge amount of files even more. Thanks!

        1. Hi Anka, can you email me the file and write in the email which things you want changed? I think I’m guessing too much and just providing solutions for what I think you need, as opposed to what you really need! I won’t change the file, but will explain how to do it. You can email me at pfilkin at sdl dotcom

  10. Hi Paul,
    I’ve added some additional functionality to the Autohotkey script for smart quotes (many thanks to you and to Jesús):
    This should work for most cases, and can easily be adapted to use different styles of smart quotes (e.g. German smart quotes):
    ;—————————————————————————–
    ; Utility to mimick smart double quotes and apostrophes in SDL Trados Studio
    ; and SDL Trados TagEditor (without interfering with other programs – and you
    ; can add or remove programs to the list of those in which the script works.
    ; It also allows entering a curly apostrophe, “dumb” (i.e. straight) single
    ; and double quotes, and even «French» quotes
    ;—————————————————————————–
    ;—————————————————————————–
    ; Settings
    ;——————————————————————————
    #NoEnv ; For security
    #SingleInstance force
    SetTitleMatchMode 2 ; A window’s title can contain WinTitle anywhere inside it to be a match.
    ;——————————————————————————
    ; make the script work only in SDL Trados Studio and SDL Trados TagEditor:
    ; add the two programs to the “groupSDL” group – it is possible to
    ; add additional programs here, if necessary
    ;——————————————————————————
    GroupAdd, groupSDL, SDL Trados Studio
    GroupAdd, groupSDL, SDL Trados TagEditor
    ;——————————————————————————
    ;activate the group
    ;——————————————————————————
    #IfWinActive ahk_group groupSDL
    ;——————————————————————————
    ; Replace dumb double quotes using a boolean variable (thanks to Jesús Prieto –
    ; this is taken from his suggestion).
    ; First quote entered will be the starting quote, next the closing, next the
    ; starting, and so on.
    ; If the quote is not the intended one, just delete it and press again the key “.
    ; The new entered will be fine…
    ;——————————————————————————
    :*?:”::
    if (finalQuotes=false)
    {
    Send ”
    finalQuotes:=true
    }
    else
    {
    Send “
    finalQuotes:=false
    }
    Return
    ;——————————————————————————
    ; Replace dumb single quotes with smart single quotes as you type.
    ;——————————————————————————
    :*?:’ ::
    Send ’%A_Space%
    Return
    :*?: ‘:: ‘
    ;——————————————————————————
    ; Smart apostrophe
    ;——————————————————————————
    :*?:’::’
    ;——————————————————————————
    ; if dumb double quotes are needed (e.g, to indicate inches, as in 5’5″), type the §
    ; character (I chose § since it is a character I very rarely use – change this
    ; to whatever is most convenient for you)
    ;——————————————————————————
    :*?:§::”
    ;——————————————————————————
    ; if dumb single quotes are needed (e.g., to indicate feet, as in 5’5″), type the ^
    ; character (Again, I chose ^ since it is a character I very rarely use – change
    ; this to whatever is most convenient for you)
    ;——————————————————————————
    :*?:^::’
    ;——————————————————————————
    ; In Italian, in addition to “smart” quotes, we may need “French” smart quotes
    ; for book translations, In order to obtain them, type
    ; Ctrl+< for the opening quote and Win+< for the closing quote
    ;——————————————————————————
    ^<::«
    #<::»
    ;——————————————————————————
    ;end of "groupSDL" exception
    ;——————————————————————————
    #IfWinActive
    ;——————————————————————————
    ;any additional script code that is suppose to work even outside the "groupSDL"
    ; programs would go after this comment block
    ;——————————————————————————

  11. A further small refinement to the script:

    GroupAdd, groupSDL, ahk_exe SDLTradosStudio.exe ; ahk_exe allows the script to apply also to underlying Studio
    ; windows, like the Find and Replace one, otherwise the script
    ; would work only in the editor window

  12. Hi all, I just upgraded from Studio 2011 to 2014, and the keyboard shortcut for the “German smart quotes” seems to have vanished. Does anybody have an idea how to assign a keyboard shortcut to this QuickInsert? The problem is that it does not appear in the list of functions under “Options – Keyboard Shortcuts”.
    The function in question is called “German quotes” here:
    http://producthelp.sdl.com/SDL_Trados_Studio_2014/client_en/Home_Tab_-_Editor_View.htm

  13. I’m not sure since which version this is included, but with Trados 2015 there is this feature:
    Options -> Editor -> AutoCorrect -> Replace “straight quotes” with smart quotes.
    This is great, but we have the issue that this works in some projects but not in others. All are EN-UK and doxc files.
    The only difference I found was that one used the “Word 2007” filetype (works) and the other “WordprocessingML v.2” (does not work).
    Any idea where this comes from? We could not find this setting on a per project setting.

    1. Hi Remy, I haven’t come across that but you’re right that this is a global setting, not project based. Perhaps worth posting into the TP Community where you can be sure someone else will have come across this if it’s a common issue.

  14. It seems that everybody loves smart quotes except for me. I am a localization engineer, I have to deal with translations of .properties files, and I would really really like to turn this feature off for all translators because straight single quotes must be doubled in Java .properties files if a string contains a placeholder. Having two curly quotes in the translation because of this setting causes manual clean-up, having one straight and one curly quote will break the string when it gets loaded.
    I know that I should use Passolo for .properties files, and I would love to, but that’s not an option. Is there any way in Studio 2015 to make this setting format specific, i.e. enable it for MS Office formats and disable it for .properties files?

    1. Hi Bernd, you can turn it off in the options, but it’s not controlled by a package you create, so giving instructions is the only way I’m afraid. You also can’t make this filetype specific as this is also not a Project setting it’s a global one.

      1. Thanks a lot for the quick answer, Paul. It is not what I had hoped for: there are always a few translators who don’t read instructions. Since apostrophes and quotes are a big issue in lots of other software formats as well (Android XML, for example) I think it could be useful to change this setting to become file type specific. BTW, the setting seems to be language-specific, so our translators who translate into Spanish and Catalan will have to change it in two places.

    2. Hi Bernd, you can turn it off in the options, but it’s not controlled by a package you create, so giving instructions is the only way I’m afraid. You also can’t make this filetype specific as this is also not a Project setting it’s a global one.

  15. Hi Paul,
    Now that automatic smart quotes are supposed to be available (Studio 2015 and 2017), I’ve encountered a doozy of a bad decision from SDL’s developers:
    Although a translator may choose to enable smart quotes in his work, SDL disables smart quotes when track changes are active (e.g., when you are in review or sign-off mode).
    Support tells me that “This currently is by design so that no uncontrolled/automatic changes should happen when typing in review mode.”
    Your developers have failed to anticipate that disabling smart quotes during review or sign-off may lead to real errors.
    For example:
    1) The translation is done with smart quotes enabled. So the translator writes his translation with smart double and single quotes, and smart apostrophes.
    2) The translation is then sent to a reviewer. Working in review mode, she edits the translator’s work. Any changes she makes that involve writing quotes or apostrophes will be the wrong kind (and the translation will now have a nice mess of mixed straight and smart quotes.)
    3) The translation is sent back to the translator for sign off. In sign off mode the translator cannot correct the quotes back to “smart” mode either.
    Bonus problem: quotes and apostrophes are tiny characters, so it is entirely possible that editor and translator won’t realize what has happened… perhaps, only the customer will discover the whole mess, after printing the final document.
    For myself I have a solution: I’m back to using AutoHotkey to replace straight quotes with smart quotes no matter what straitjacket Studio imposes; but this should never have been allowed to happen. At first I thought it was a bug… it’s worse than that: it’s a deliberate decision taken without considering the outcome.
    Riccardo

    1. Hi Riccardo, why don’t you write this where it will do the most good? http://ideas.sdl.com
      The ideas site has been completely revamped and integrated into the Product Managers workflow. If you put it there, get plenty of people to agree with you, then you are more likely to see something done about than posting in here. Would get my vote too 🙂

  16. Some great inputs here; however, all biased toward typing as you go and/or simple Search & Replace of one type of quotes. That brings me to a question: has anyone dealt with cases, wherein your target text has a multitude of different types of quotes and you need to unify them to one type only?
    It often happens when the target text was “touched” by a number of people, e.g. some of them used dumb quotes, some smart quotes, some right-curled quotes, some bottom quotes. It clearly creates a mess in the target file, while manual review and change are prone to a human mistake.
    I can only think of listing down all types of quotes and using a regex with | (or) metacharacter to make it work, but perhaps there is a more elegant solution to this problem?

    1. Interesting problem… I guess you need to implement a styleguide and enforce it. But otherwise regex search & replace seems the way to go. Not difficult to edit the simple example in here.

  17. Hi Paul.

    Thank you for this long article. With several workaround suggestions for this Trados problem.

    However, I cannot believe that I still have to go through this in 2020, and that this issue still hasn’t been fixed in Trados 2021…

    Best regards,
    Snorre

  18. It seems there is a small but critical error above in the regex for the search and replace:
    Not: (s)”(.+?)”
    But: (\s)”(.+?)”

    Believe me, I know how extremely easy it is to leave out the delimiter.

    I am however surprised that the error seems to have gone undetected for so long…

Leave a Reply