Welcome / Bienvenue / Benvinguts / Bienvenidos
For information about my translation services, please visit the main site.
Pour des informations sur mes services, merci de regarder le site principal.Para información sobre mis servicios de traducción, visite el web principal.
In this video, I’ve reviewed what I think of the latest update of PerfectIt.
I’ve also created a video about the update to the United Nations style sheet provided by PerfectIt.
In summary, I’m disappointed at the lack of development of PerfectIt for Word for Professional users.
Since recording the video, I heard that PerfectIt are moving towards a new interface that will be similar to the one in Powerpoint, which I haven’t yet tested. I look forward to seeing what they have in store.
For more information about my upcoming PerfectIt Masterclass and Advanced Word for Editors, see the Magistrad website and follow #PerfectItMasterclass and #AdvancedWord4Editors on social media.
Scores of changes have been introduced in the 18th edition of the Chicago Manual of Style (CMOS). You can find a list of all the changes here.
***Update: I wrote this blog post before PerfectIt released version 6, which includes an updated style sheet that the developers say has been brought in line with the 18th edition of CMOS. I have left this post on my blog because the tips I’ve provided could be useful for other updates to your style sheets.***
PerfectIt includes a style sheet for the Chicago Manual of Style, but it has not been updated for the 18th edition, so I decided to give a few examples of how we can get PerfectIt to apply some of the new rules. (For more examples of advanced methods to enforce style rules, don’t miss my PerfectIt masterclass, which you can sign up for here.)
Written instructions are provided below the video.
Before adding these rules, I recommend you create a copy of the CMOS style sheet. You might want to call it something like “Chicago plus my edits”.
1 New CMOS rule 7.96: “The word ebook is now closed rather than hyphenated.”
PerfectIt’s existing CMOS style sheet included a rule to ensure a hyphen was used. Under “Always Find”, go to the “Search” box (bottom-left) and enter “e-book” (without the quotation marks.
Notice that the old checks were incorrectly added as “Preferred spelling” checks. They should have been entered as “Hyphenation of words” checks. In any case, we need to delete them, as they are now obsolete.
Click on the first line containing “e-book”, so that the row is highlighted in blue, then click on “Delete” four times, to delete the four entries.
Next, add the following simple rules to replace them (basic rules like these are covered in my “Introduction to PerfectIt” course):
When PerfectIt is running the check for: Hyphenation of words
PerfectIt should warn if it finds the phrase: e-book
If it finds the phrase, it should suggest: ebook
Instructions: The word ebook is now closed rather than hyphenated.
When PerfectIt is running the check for: Hyphenation of words
PerfectIt should warn if it finds the phrase: e-books
If it finds the phrase, it should suggest: ebooks
Instructions: The word ebook is now closed rather than hyphenated.
You can also add the capitalization rules to ensure that the initial e is not capitalized (unless it’s at the start of a sentence):
When PerfectIt is running the check for: Capitalization of phrases
If it finds the phrase, it should suggest: Ebook
Instructions: The word “ebook” does not take an initial cap.
You can also add the capitalization rules to ensure that the initial e is not capitalized (unless it’s at the start of a sentence):
When PerfectIt is running the check for: Capitalization of phrases
If it finds the phrase, it should suggest: Ebooks
Instructions: The word “ebook” does not take an initial cap.
2 New CMOS rule 6.85: “An en dash rather than a hyphen should be used between the names of two or more people used as a compound modifier before a noun (e.g., “Ali–Frazier match”; “Epstein–Barr virus”).”
PerfectIt’s existing CMOS style sheet did not include such a check for the old rule (with a hyphen), so there is no check to replace.
Simply add the following check in Wildcards:
When PerfectIt is running the check for: Wildcard Find and Replace
PerfectIt should warn if it finds the phrase: (<[A-Z][a-z]@)-([A-Z][a-z]@>)
If it finds the phrase, it should suggest: \1–\2
Instructions: Use an en dash, not a hyphen, between the names of two or more people used as a compound modifier before a noun (e.g., “Ali–Frazier match”; “Epstein–Barr virus”).
3 New CMOS rule 7.86: “An apostrophe is now used before the “s” to form the plural of a capital letter.”
Again, PerfectIt’s existing CMOS style sheet did not include such a check for the old rule (with a hyphen), so there is no check to replace.
Simply add the following check in Wildcards:
When PerfectIt is running the check for: Wildcard Find and Replace
PerfectIt should warn if it finds the phrase: <([A-Z])s>
If it finds the phrase, it should suggest: \1’s
Instructions: Use an apostrophe before the “s” to form the plural of a capital letter.
Note the “Except after” rules, designed to prevent, for example, the words “As” and “They” from being flagged when they appear at the beginning of a sentence.
If you want to test the above rules, you can use the dummy text at the bottom of this post. With rule number 3, notice the false positives if you don’t include the “Except after” rule.
If you found this post useful, please like and share it.
Is there something you’d like to have checked in your documents but you don’t know how? Leave a comment below, and I’ll do my best to help.
Dummy text for testing the above rules (paste this dummy text into Word then run PerfectIt with the style sheet you edited):
This is a dummy text for testing the rules described above. First, I’m going to mention an e-book. Then I’m going to write about the Duckworth-Lewis method. As Messieurs Duckworth and Lewis are so smart, they must have got straight As at school. Is that not true?
If you translate from French, you’re probably sick of clicking “Ignore” or “Add” during the spell check every time a French place name crops up in your text. I’ve got good news!
Most freelancers in France seem to believe that, like in the United Kingdom and the Republic of Ireland (and possibly other states), small business with income below a certain threshold are not required to acquire an intra-EU VAT number. However, a government website makes it very clear that any French business or auto-entrepreneur that purchases or supplies services across EU borders needs to obtain a number. The €10,000 threshold that applies to goods does not apply to services. Here’s what the French authorities say:
En revanche, le numéro devient obligatoire … lorsqu’elle vend ou achète des prestations de services à des sociétés établies dans l’UE.
This rule is so unknown that many freelance translators have reported that they have struggled to convince the tax office to give them a VAT number. I therefore recommend that when you request the number, you provide the tax authorities with a print-out of the webpage that states that you require it.
If you found this article useful, why not translate it into French so that more people will find it? I will add a sentence stating who translated it and a link to your website. You may use the article on your own blog too, provided that you state the source. Send me an e-mail if you are interested.
Updated version uploaded on 1 December 2022. This updated version includes a correction of the error that was in the video and other minor tweaks, and it now updates the language in certain cases where it previously did not work.
Ever felt frustrated when Word keeps selecting the wrong language every time you add a comment? This video explains how to change the language for all elements of a Word document, including footnotes, comments and text boxed, in an instant.
The macro code is below. The video explains how to import the code. Note that near the top of the code, sandwiched between asterisks, there is a line you may need to change, depending on the language and variety that you want to use.
Please leave a comment to let me know whether it works for you.
Sub LanguageAllStyles()
Dim LanguageId As MsoLanguageID
'***************
LanguageId = msoLanguageIDEnglishUK ' Insert the Name or the Value listed at https://learn.microsoft.com/en-us/office/vba/api/word.wdlanguageid.
'***************
' Macro to change language in styles
' Loosely based on a macro posted by Macropod (17 July 2012)
' http://www.vbaexpress.com/forum/showthread.php?42993-Solved-Macro-to-change-all-styles-to-a-specific-languageDim TrackChangesActive As Boolean ' Only possible values are True/False
Dim CheckSpellingAsYouTypeActive As Boolean
Dim CheckGrammarAsYouTypeActive As Boolean
Dim ShowFormatChanges As Boolean
Dim doc As Document
Dim SkipTrackChangesQuestion As Boolean
Dim oDoc As Document, oSty As Style, oStor As Range
Application.ScreenUpdating = False
'Block taken from my personal “MacroSwitchesOff” code
If Options.CheckSpellingAsYouType = True Then CheckSpellingAsYouTypeActive = True Else CheckSpellingAsYouTypeActive = False ' Checks whether CheckSpellingAsYouType is switched on.
Options.CheckSpellingAsYouType = False
' Forces Word to check everything again with the new language. Cancel the above line if you don’t want Word to forget when you’ve “Ignored” a flagged spelling.
' Without switching this setting off and on, Word still underlines words that are correctly written in the new language.
If Options.CheckGrammarAsYouType = True Then CheckGrammarAsYouTypeActive = True Else CheckGrammarAsYouTypeActive = False
Options.CheckGrammarAsYouType = False
' See previous comment
If ActiveDocument.ActiveWindow.View.ShowFormatChanges = True Then ShowFormatChanges = True Else ShowFormatChanges = False
ActiveDocument.ActiveWindow.View.ShowFormatChanges = False
'Check whether Format changes are shown
If ActiveDocument.TrackRevisions = True Then TrackChangesActive = True Else TrackChangesActive = False
If SkipTrackChangesQuestion <> True Then ' Skip the track changes question
If MsgBox("Perform the operation with track changes?", _
vbYesNoCancel) = vbNo Then
ActiveDocument.TrackRevisions = False
Else
ActiveDocument.TrackRevisions = True
End If
End If
Set oDoc = ActiveDocument
With oDoc
For Each oSty In .Styles
StatusBar = oSty
On Error Resume Next
oSty.LanguageId = LanguageId
On Error GoTo 0
Next
End With
With oDoc
For Each oStor In .StoryRanges
StatusBar = "Setting story " & oStor & " to language " & LanguageId
oStor.LanguageId = LanguageId
Next oStor
End With
ActiveDocument.Range.LanguageId = LanguageId ' Uses the normal method, equivalent of pressing ctrl+a and setting the language.
'Block taken from my personal “MacroSwitchesOnAgain” code
' The lines below revert settings to the status they had before the macro was run
If TrackChangesActive = True Then ActiveDocument.TrackRevisions = True
If CheckSpellingAsYouTypeActive = True Then Options.CheckSpellingAsYouType = True
If CheckGrammarAsYouTypeActive = True Then Options.CheckGrammarAsYouType = True
If ShowFormatChanges = True Then ActiveDocument.ActiveWindow.View.ShowFormatChanges = True
ActiveDocument.ActiveWindow.View.ShowFormatChanges = True
Application.ScreenUpdating = True
MsgBox ("Finished! The language of all sections of the document has been set to " & LanguageId & ". If you wanted to select another language, open the VBA editor by pressing alt+f11 and change the 'LanguageID' shown at the top of the script")
End Sub
During my presentation entitled “An overview of institutional styles: from excellent tips we can all apply to the downright weird guidelines we should probably ignore” for the 2021 conference of Mediterranean Editors and Translators, I talked about the style guidelines of different international institutions.
The style guides I mentioned during the publication that are publicly available can be downloaded from the following links:
For a €5 discount with GoOpti, use the voucher code RFLID5M5H3VW on the payment page or use this referral link. Once you have used the coupon code, the discount will apply automatically.
GoOpti is a door-to-door airport shuttle service, so you don’t have to worry about walking with your luggage to catch the bus or train.
In Rome, private and shared transfers are now available from Rome to Fiumicino and Ciampino airports and vice versa. In Italy, the company runs shuttles to and from most airports in the north of the country: Bergamo, Bologna, Cesena, Faenza, Ferrara, Forlí, Genoa (Genova), Imola, Mantua (Mantova), Milan-Malpensa, Milan-Linate, Modena, Padua (Padova), Parma, Piacenza, Pordenone, Ravenna, Reggio Emilia, Rimini, Rovigo, Savona, Treviso, Trieste, Udine, Venice-Marco Polo (Venezia), Verona and Vicenza.
In Slovenia, GoOpti runs shuttles to and from Bled, Brnik, Ljubljana, Maribor and Murska Sobota, with connections to Budapest Airport in Hungary, Graz Airport in Austria and Trieste Airport in Italy.
In Croatia, it operates in Opatija, Porec, Portoroz, Pula, Rovinj and Zagreb, with connections to Belgrade in Serbia and Budapest Airport in Hungary.
In Austria, its shuttles run to and from Graz, Salzburg and Vienna airports and connect with Klagenfurt and Villach. From Salzburg airport you can connect to Munich Airport in Bavaria, Germany.
MemoQ’s monolingual review feature works best with clean Word documents containing no tracked changes or comments. If you import a document in which changes are still visible or in which there are comments, memoQ will add lots of code to the target text, which you don’t want.
This macro cleans the document up and saves it under a new filename (so that you don’t overwrite the commented version), making it ready to be imported as a monolingual review.
The macro includes comments to explain what some of the lines are doing and how you can adjust the macro to meet your needs.
Since many translators use only straight apostrophes and quotation marks in memoQ, then convert them to the curly variety in the final document sent to the client, the macro includes an optional line (deactivated by default) that will revert all apostrophes and quotation marks to the straight variety. Please read the instructions carefully if you wish to use that line.
Thanks to Kevin Mote, who provided the code for the part of the macro that renames the file. My code is a slightly modified version of his. In particular, unlike Kevin’s version, mine does not overwrite the old version, since most translators would want to keep a copy of the commented version they sent to their client.
Sub PrepareForMemoQMonolingualReview()
' memoQ's monolingual review feature works best when you import a document with no tracked changes and no comments.
' This macro removes them, then resaves the file with "clean-for-import" appended to the file name.
' The part that appends the filename is adapted from the macro provided by Kevin Mote (https://www.linkedin.com/in/kevinmote/) at https://superuser.com/a/781501. Thank you Kevin. This was very helpful!
' Please note that, unlike Kevin's macro, this version does not delete the original file.
Dim strFileFullName, strFileName, strNewName, strFileExtension As String
'
ActiveDocument.AcceptAllRevisions ' Accepts all tracked changes
ActiveDocument.TrackRevisions = False ' Switches off track changes
ActiveDocument.DeleteAllComments ' Deletes all comments in the active document.
ReplaceQuotes ' Reverts quotation marks and apostrophes back to the straight variety, assuming that this is the variety that was used while working in the CAT tool.
' Remove the apostrophe from the above line if you want the monolingual review document to revert to straight apostrophes and quotation marks.
' Note that to run the above line you also need to have installed the "ReplaceQuotes" and "QuotesReplacementBothWays" macros, which I provided along with several others in a blog post at http://www.anglopremier.com/blog/?p=1119.
' *****ADDITIONAL OPTION DESCRIBED ABOVE*****
' Get current name:
strFileFullName = ActiveDocument.FullName 'for Word docs
'strFileFullName = ActiveWorkbook.FullName 'Use this line instead for for Excel docs
'strFileFullName = Application.ActivePresentation.FullName 'Use this line instead for Powerpoint presentations
If (InStr(strFileFullName, ".") = 0) Then ' Checks whether the full file name contains a file extension by looking for a dot.
res = MsgBox("File has not been saved. Can't rename it.", , "Rename File")
Exit Sub
End If
' strFileName = Right(strFileFullName, Len(strFileFullName) - InStrRev(strFileFullName, "\")) 'strip path - not used. Next line used instead.
strFileName = strFileFullName
strFileExtension = Right(strFileName, Len(strFileName) - InStrRev(strFileName, ".")) ' Identifies the file extension
strFileName = Left(strFileName, (InStr(strFileName, ".") - 1)) ' Strips the extension from the strFileName variable
' If InStr(3, strFileName, "_Delivery", 1) <> 0 Then strFileName = Left(strFileName, (InStr(strFileName, "_Delivery", 1) - 1))
' The above line is not used. Originally intended to strip the word "_Delivery" and the delivery number from the file name (assumes "Delivery" is at least the third character; not case-sensitive). But I dedcided I wanted to keep the delivery number.
' If you wish to remove something from the file name you can reinstate the above line (remove the apostrophe) and replace "_Delivery" with whatever you want to remove.
' Prompt for new name. Replace "_clean-for-import" on the next line if you prefer something else to be appended by default.
strNewName = InputBox("Rename this file to:", "Rename File", strFileName & "_clean-for-import." & strFileExtension) 'Saves with the new name. Extension is not changed.
If (strNewName = "") Or (strNewName = strFileName) Then ' (Check whether user cancelled)
Exit Sub
End If
' Save file with new name:
ActiveDocument.SaveAs2 FileName:=strNewName 'for Word docs
'ActiveWorkbook.SaveAs2 FileName:=strNewName 'for Excel docs
'Application.ActivePresentation.SaveAs FileName:=strNewName 'for Powerpoint presentations
To ensure that concordance searches in translation memories work properly and to increase fuzzy matches, many translators systematically replace curly apostrophes and quotation marks with straight ones before importing a document into their CAT tool, then revert them back to the curly variety before delivering the final document to the client.
Until recently, I used a very simple find/replace macro to achieve this, but then I realized that the macro didn’t replace apostrophes and quotation marks situated. I searched online and found a solution that works not only in the main document but also in footnotes and text boxes. Thanks to Doug Robbins and Greg Maxey, whose work I drew on to create one of the macros below.
I’ve included extensive comments so that you can understand what each line is doing and adapt it as necessary.
Sub ReplaceQuotes() ‘ Replace curly quotation marks and apostrophes with straight ones.
Options.AutoFormatAsYouTypeReplaceQuotes = False ‘ Sets autoformat option not to replace curly quotes with straight ones. This is reset in the final like of the QuotesReplacementBothWays macro.
QuotesReplacementBothWays
End Sub
Sub ReinstateQuotes() ‘ Replace straight quotation marks and apostrophes with curly ones.
Options.AutoFormatAsYouTypeReplaceQuotes = True ‘ Sets autoformat option to replace curly quotes with straight ones, in case the user has manually set the option to false before running the macro.
QuotesReplacementBothWays
End Sub
Sub QuotesReplacementBothWays()
pFindTxtFromOtherMacro = “‘”
pReplaceTxtFromOtherMacro = “‘”
FindReplaceAnywhere
pFindTxtFromOtherMacro = “””” ‘ Find all quotation marks (smart or curly). Four quotation marks are needed because the ” symbol has a special meaning that must be cancelled.
pReplaceTxtFromOtherMacro = “””” ‘ Replaces with smart or curly, depending on whether ReplaceQuotes or ReinstateQuotes was run.
FindReplaceAnywhere
‘ Remove the apostrophes from the start of each line in this section to replace French guillemets with English-style straight quotation marks.
‘ pFindTxtFromOtherMacro = “« ” ‘ Find all opening guillemets followed by a space (incl. non-breaking spaces).
‘ FindReplaceAnywhere
‘ pFindTxtFromOtherMacro = “«” ‘ Find remaining opening guillemets with no space after.
‘ FindReplaceAnywhere
‘ pFindTxtFromOtherMacro = ” »” ‘ Find all closing guillemets preceded by a space (incl. non-breaking spaces).
‘ FindReplaceAnywhere
‘ pFindTxtFromOtherMacro = “»” ‘ Find remaining closing guillemets with no space before.
‘ FindReplaceAnywhere
pFindTxtFromOtherMacro = “” ‘ Makes the variable empty again
pReplaceTxtFromOtherMacro = “” ‘ Makes the variable empty again
Options.AutoFormatAsYouTypeReplaceQuotes = True ‘ Reverts to Word’s default setting. Change this to “False” if you prefer Word not to replace straight quotes with curly ones as you type.
End Sub
Public Sub FindReplaceAnywhere()
‘Performs a find/replace on all parts of a text, including footnotes, text boxes, etc.
‘Found on various webpages, but seems to have been originally created by Doug Robbins and Greg Maxey (https://wordmvp.com/FAQs/Customization/ReplaceAnywhere.htm).
‘Adapted so that it can be run with the find and replace strings pre-defined by other macros.
Dim rngStory As Word.Range
Dim pFindTxt As String
Dim pReplaceTxt As String
Dim lngJunk As Long
Dim oShp As Shape
If pFindTxtFromOtherMacro = “” Then
‘ This macro can be used on its own, in which case the user is asked what Word should find.
pFindTxt = InputBox(“Enter the text that you want to find.” _
, “FIND”)
If pFindTxt = “” Then
MsgBox “Cancelled by User”
Exit Sub
End If
Else
pFindTxt = pFindTxtFromOtherMacro
End If
TryAgain:
If pReplaceTxtFromOtherMacro = “” Then
‘ This macro can be used on its own, in which case the user is asked what Word should replace the found string with.
pReplaceTxt = InputBox(“Enter the replacement.”, “REPLACE”)
If pReplaceTxt = “” Then
If MsgBox(“Do you just want to delete the found text?”, _
vbYesNoCancel) = vbNo Then
GoTo TryAgain
ElseIf vbCancel Then
MsgBox “Cancelled by User.”
Exit Sub
End If
End If
Else
pReplaceTxt = pReplaceTxtFromOtherMacro
End If
lngJunk = ActiveDocument.Sections(1).Headers(1).Range.StoryType ‘Fix the skipped blank Header/Footer problem
For Each rngStory In ActiveDocument.StoryRanges ‘Iterate through all story types in the current document
Do
SearchAndReplaceInStory rngStory, pFindTxt, pReplaceTxt
On Error Resume Next
Select Case rngStory.StoryType
Case 6, 7, 8, 9, 10, 11
If rngStory.ShapeRange.Count > 0 Then
For Each oShp In rngStory.ShapeRange
If oShp.TextFrame.HasText Then
SearchAndReplaceInStory oShp.TextFrame.TextRange, _
pFindTxt, pReplaceTxt
End If
Next
End If
Case Else
End Select
On Error GoTo 0
Set rngStory = rngStory.NextStoryRange ‘Get next linked story (if any)
Loop Until rngStory Is Nothing ‘ Loops back to the “Do”
Next ‘ Loops back to “For Each rngStory”
End Sub
Public Sub SearchAndReplaceInStory(ByVal rngStory As Word.Range, _
ByVal strSearch As String, ByVal strReplace As String)
With rngStory.Find
.ClearFormatting
.Replacement.ClearFormatting
.Text = strSearch
.Replacement.Text = strReplace
.Wrap = wdFindContinue
.Execute Replace:=wdReplaceAll
End With
Sometimes you want to keep the MemoQ Concordance window open on your second screen while you work on your document. But there’s no built-in method to achieve this with the keyboard. You can only do so by clicking with the mouse.
This short script moves the focus away from the Concordance window and to the main MemoQ window, allowing you to work on the document while keeping the Concordance window open. Just press ctrl+k to activate the script.