From DPWiki
Jump to navigation Jump to search

GG Mac Keyboard Shortcuts testing

<cmd>+up-arrow -- beginning of file
<cmd>+down-arrow -- end of file
<cmd>+left-arrow -- } default Mac behavior, beginning or
<cmd>+right-arrow -- } end of line; GG, nothing.

<cmd>+x -- cut or column cut } simple cut, copy paste using <cmd> work,
<cmd>+c -- copy or column copy } but column cut/copy/paste do not. column
<cmd>+v -- paste } select using shift key works fine, it's just that the
. } cut/copy/paste do not work the same way the commands
. } using the <ctrl> key do. Note that on Macs the option or
. } shift-option are common mod keys for column select.
<cmd>+o -- open file -- doesn't work
<cmd>+s -- save file -- does work
<cmd>+<shift>+s -- save as -- acts as <cmd>+s does -- saves without a dialog.


<ctrl>+x -- cut or column cut {Mac}
<ctrl>+c -- copy or column copy {Mac}
<ctrl>+v -- paste {Mac}
<ctrl>+a -- select all {Mac}
<ctrl>+o -- open file {Mac}
<ctrl>+s -- save file {Mac}
<ctrl>+<shift>+s -- save as {Mac}
<ctrl>+<alt>+r -- open regex quick reference {Mac: Using option for alt opens "surround with"; ctrl-cmd works as advertized}
<ctrl>+<alt>+v -- alternative paste method to avoid bug with Unicode characters {Mac: both ctrl-option and ctrl-command paste something, but I don't know how to test that it's a correct paste for the function}

<shift>+mouse drag -- column select Works on Macs (option plus mouse drag does not)
F1 -- column copy  } Something funky is going on with the Macs, or maybe I just
F2 -- column cut   } don't understand how it is supposed to work; column copy 
F3 -- column paste } appears to be working fine, and column cut appears to work
                   } but column paste overwrites even empty lines. Is that expected
                   } behavior?

F5 -- open Word Frequency
F6 -- run Bookloupe
F7 -- spell check selection (or document, if no selection made)
F8 -- open Stealth Scannos search

The function keys appear to work on Macs as advertised with my caveats about F1-F3.
Mac users can set prefs for the function keys to operate as function keys without the mod key, but if they don't have that set, they have to use the "fn" key with the function key.

<ctrl>+z -- undo
<ctrl>+y, <ctrl>+<shift>+z -- redo :: On Macs, this sort of works, but I'm not entirely
                                      sure I know how it's supposed to work. <ctrl>+y and
                                      <ctrl>+<shift>+z do not seem to work the same, so
                                      I need to do some focused testing. <cmd>+<shift>+z
                                      works slightly differently.

<ctrl>+u -- Convert case of selection to upper case  } these three work as they are on
<ctrl>+l -- Convert case of selection to lower case  } Macs; the corresponding <cmd>+
<ctrl>+t -- Convert case of selection to title case  } do not.

<ctrl>+d -- delete character after cursor (Delete)
<ctrl>+h -- delete character to the left of the cursor (Backspace)
<ctrl>+k -- delete from cursor to end of line
<ctrl>+<backspace> -- delete word backwards {macOS: <ctrl>+<delete>}
<ctrl>+<delete> -- delete word forwards {macOS: <ctrl>+<fn>+<delete>}

<ctrl>+f -- open Search & Replace popup
<ctrl>+g -- continue search
<ctrl>+<shift>+g -- continue search in opposite direction
<ctrl>+b -- count number of matches
<ctrl>+<shift>+b -- quick-count number of matches to highlighted word(s)

<ctrl>+i -- view current image (as See Img button)
<ctrl>+j -- go to line
<ctrl>+p -- go to page
<ctrl>+<shift>+p -- go to page label

<ctrl>+w -- rewrap selection
<ctrl>+<shift>+w -- block rewrap selection
<ctrl>+m (or) <alt>+right arrow -- indent +1 / move column selection right
<ctrl>+<shift>+m (or) <alt>+left arrow -- indent -1 / move column selection left
<ctrl>+<alt>+m -- indent +4
<ctrl>+<alt>+<shift>+m -- indent -4
<ctrl>+e -- flood fill (if popup is open, otherwise open it)
<ctrl>+r -- surround text (if popup is open, otherwise open it)

<ctrl>+Home -- move cursor to the start of the text
<ctrl>+End -- move cursor to end of the text
<ctrl>+right arrow -- move to the start of the next word
<ctrl>+left arrow -- move to the start of the previous word
<ctrl>+up arrow -- move to the start of the current paragraph
<ctrl>+down arrow -- move to the start of the next paragraph
<ctrl>+PgUp -- scroll left one screen
<ctrl>+PgDn -- scroll right one screen

<shift>+Home -- adjust selection to beginning of current line
<shift>+End -- adjust selection to end of current line
<shift>+up arrow -- adjust selection up one line
<shift>+down arrow -- adjust selection down one line
<shift>+left arrow -- adjust selection left one character
<shift>+right arrow -- adjust selection right one character

<shift>+<ctrl>+Home -- adjust selection to the start of the text
<shift>+<ctrl>+End -- adjust selection to end of the text
<shift>+<ctrl>+left arrow -- adjust selection to the start of the previous word
<shift>+<ctrl>+right arrow -- adjust selection to the start of the next word
<shift>+<ctrl>+up arrow -- adjust selection to the start of the current paragraph
<shift>+<ctrl>+down arrow -- adjust selection to the start of the next paragraph

<ctrl>+, -- highlight all apostrophes in selection
<ctrl>+. -- highlight all double quotes in selection
<ctrl>+<alt>+h -- highlight arbitrary characters in selection
<ctrl>+; -- toggle highlighting of quotes and brackets
<ctrl>+<shift>+a -- toggle highlighting of vertical column at cursor
<ctrl>+0 -- remove all highlights

<ctrl>+1,2,3,4,5 -- go to bookmark 1,2,3,4,5
<ctrl>+<shift>+1,2,3,4,5 -- set bookmark 1,2,3,4,5

<Insert> -- Toggle insert / overstrike mode

Double-click left mouse button -- select word
Triple-click left mouse button -- select line

<shift>+click left mouse button -- adjust selection to click point
<shift>+double-click left mouse button -- adjust selection to include word clicked on
<shift>+triple-click left mouse button -- adjust selection to include line clicked on

Single click right mouse button -- pop up shortcut to menu bar

Right Alt / AltGr key -- compose character with keystrokes (<ctrl>+m on Mac)

<command>+q - quit Guiguts (Mac only)

MENUS (non-Mac)

Hold Alt to activate the menu bar, select an item by typing its underlined symbol.


F1 -- Display the relevant manual page in a browser window 


<Enter> -- Search
<shift>+<Enter> -- Replace
<ctrl>+<Enter> -- Replace & Search
<ctrl>+<shift>+<Enter> -- Replace All


j -- Join Lines - join lines, remove all blank lines, spaces, asterisks and hyphens
k -- Join, Keep Hyphen - join lines, remove all blank lines, spaces and asterisks, keep hyphen
l -- Blank Line - leave one blank line. Close up any other whitespace (paragraph break)
t -- New Section - leave two blank lines. Close up any other whitespace (section break)
h -- New Chapter - leave four blank lines. Close up any other whitespace (chapter break)
d -- Delete - delete the page separator. Make no other edits
r -- Refresh - search for, highlight and re-center the next page separator
u -- Undo - undo the last edit
e -- Redo - redo the last undo
v -- View - view the current page in the image viewer
a -- Auto - cycle through the automatic modes (No Auto, Auto Advance, 80% Auto, 99% Auto)
? -- Help - show Page Separator Fixup help


<ctrl>+s -- Skip word
<ctrl>+i -- Skip all/ignore word
<ctrl>+a -- Add word to Aspell dictionary
<ctrl>+p -- Add word to project dictionary 


PgDn/PgUp -- move to next/previous page marker
Up/Down/Left/Right arrows -- move current page marker up/down/left/right

Mac Keyboard input for special characters

(click 'expand' to open)
Portions of the below information have been included in Typing Greek. Preserving the complete version for possible future use.

Using the keyboard to input characters with diacriticals

On newer Macs, if you simply hold down a character that can take a diacritical known to macOS, and pause, you should see a popup similar to what you might see on a phone or tablet, and can simply choose the diacritical you want. This is by far the easiest option if it's available to you and the character you want is available.

Using the keyboard to input characters with diacriticals via dead-keys

If you can't use the above method, but would still like to type characters with diacriticals, this is the easiest option. If you have the Input menu enabled, choose "Show Keyboard Viewer". The following screenshot was taken from a Mac running Catalina, but the keyboard viewer has looked similar for a long time, now.

Keyviewer mac.png

Press and hold the Option/Alt key, and you should see something like the following if you have the ABC Extended keyboard selected.

Keyviewer mac latin diacriticals.png

The ABC Extended keyboard is recommended because it has a larger number of diacriticals available than the U.S. keyboard. If you're using the U.S. keyboard, go to System Preferences->Keyboard. Under the Keyboard tab, select "Show keyboard and emoji viewers in menu bar. Under the Input Sources tab, click on the + to add a keyboard, and choose ABC Extended.

The keys that are outlined in orange show the diacritical that is associated with those keys when the option key is held down. If you press the e key with the option key held down, and the let up the keys, you should see the following:

Keyviewer mac latin diacriticals allowed.png

Simply press the key for the letter you want, and you've typed the letter.

Using the keyboard to input Greek directly on a Mac

Chances are that if you want to type Greek directly on your Mac keyboard for DP, you will be most likely to be using the Polytonic Greek characters. If you've never enabled additional keyboards before, be aware that with each new version of the operating system, there may be small differences in exactly where to look. As of macOS 10.15 (Catalina), go to System Preferences->Keyboard. Under the Keyboard tab, select "Show keyboard and emoji viewers in menu bar. Under the Input Sources tab, click on the + to add a keyboard, and choose Greek - Polytonic from the list. If it's not already chosen, click the checkbox for "Show Input menu in menu bar".

In the menu bar, click on the menu that shows which keyboard you're using. The top section shows the keyboards you have enabled. The next section down allows you to bring up the Emoji & Symbols Character Viewer and the Keyboard Viewer. If you open the Keyboard Viewer, and choose the Polytonic Greek keyboard, the display should look similar to:

Keyviewer mac greek diacriticals.png

The orange outlines are around the keys that are considered dead-keys: type the key that shows the diacritical combination you want, followed by the letter that you need that takes that diacritical. The above keyboard shows the unshifted marks -- where there's a breathing mark, it's smooth. The following keyboard shows the shifted marks -- where there's a breathing mark, it's rough.

Keyviewer mac greek diacriticals shifted.png

Once you release the appropriate mark, the keys on the keyboard with an orange outline will show those characters that are eligible to take that mark. The following example shows the letters (unshifted) that can take a rough breathing mark with a circumflex.

Keyviewer mac greek diacriticals allowed.png

The iota subscript and breve are available by holding down the option key [no screenshot].

Missing pages

The following is/was a draft. I need to look through it and see if it's irrelevant at this point in time, or should be reviewed by the other squirrels and added elsewhere, but not right now (so I'm hiding it behind a collapsible section).

(click 'expand' to open)


Note that missing illustration files should be treated separately, instead of as part of a missing pages (MP) project. See Add or replace illustration images for a project on this page.

If you have found a matching online edition, please include a link in your email to db-req.

[**mention MP finders]


  • Once you have located the missing pages, and verified that they are from the same edition as the main project, create the proofing images, a.k.a. page scans, and txt files for the missing pages. Number them so that they will end up in the correct place in the main project after a lexical sort. For example, if there are two pages missing between current pngs 012 and 013, label the missing pages 012a and 012b.
  • If the project has left P1, create a new project for the missing pages. If you are the PM for the main project, the easiest way to create the new project is to use the "Clone this project" link on the project page. The new project should have the same author, clearance, etc. as the main project. Make sure that the credit line reflects the correct image source. The title should be the same, with the addition of "[missing pages]" at the end, but without any status information (such as rounds repeated or skipped). E.g., the MP project for "An Interesting Book {R} {P1->P1} {P3 skipped}" would be "An Interesting Book [missing pages]". Load the missing pages into the project as you would for a regular project.
  • Put the MP project into P1 Unavailable. Do NOT release it yourself!
  • Send an email to db-req including your dp username, the project title and projectID of the missing pages project, and the project title and projectID of the main project into which it is to be merged. It is useful if you include the current state of the main project. You should also identify the source of the scans and, if using an online source, provide a link.

Here's a template you can use for your email:

 Subject: MP project: <number of pages> pp. Needs <rounds needed>

 projectID############# - <Project Name> [missing pages]
   to be merged into
 projectID############# - <full Project Name>
   current state: <state of original project>
 Image source: <source name> <link>
 <yourname> (<dp-username>)


 Subject: MP project: 3 pp. Needs P1, P2, F1
 projectID123abc3456yoi - An Interesting Book [missing pages]
   to be merged into
 projectID543sdfig456rt - An Interesting Book {R} {P3 skipped}
   current state: F2 Unavailable
 Image source: TIA
 not a squirrel (notasquirrel)
  • Db-req will push the MP project through until it is in a compatible state, and then merge the missing pages into the main project.

Please do not try to push the project through yourself.

Db-req can push the MP project through exactly the same rounds as the main project, which simplifies the merge steps required, especially if the main project repeated and/or skipped any rounds, or is too old to have been through P2.

Note that the MP project has to go through the rounds, even if you don't need the proofed output.

If a project is still in P1 when the missing pages are discovered, the PM can add the pages without squirrel assistance. See the PM FAQ section about missing pages. Note that this covers only adding missing pages while a project is still in P1. If the project needs to be re-numbered, that will still need to be done by a squirrel.

If you aren't able to locate scans from a matching edition, or simply don't have the time to prep the MP project, db-req still needs to know! Send an email to db-req, including the project title and projectID, a list of the missing pages, and a link to the scans (if you were able to locate them).


If you are the PPer of a project with an active PM, you should always contact the PM first, and ask them to take care of the missing pages. If it is not clear how active a PM is, ask them to contact you within a week or two, and say that you will contact db-req if they do not respond within that time. If you don't hear back within the specified time, mention in your email to db-req that you attempted to contact the PM, but did not get a response. Be aware that the PM may just be on vacation, and not checking messages frequently.

If the PM is known to be inactive (from previous experience), the above step can be skipped.

If you have found a matching edition online that can be used as a source for the missing images, please include that information in your email.

Here's a template you can use for your email:

 Subject: MP project: <number of pages> pp.
 I'm the PPer for: 
 projectID############# - <full Project Name>
 Missing pages xx - yy. PM contacted on <date>, but has not 
 responded in <not less than a week>. Matching edition 
 found at <image source>: <link> (if applicable).
 <yourname> (<dp-username>)


 Subject: MP project: 2 pp.
 I'm the PPer for:
 projectID543sdfig456rt - An Interesting Book {R} {P3 skipped}
 Missing pages numbered 17 and 18 between 021.png and 022.png. 
 PM contacted on 23 July, but has not responded in the last two weeks. 
 Matching edition found at TIA:
 not a squirrel (notasquirrel)

Db-req will run the MP project, and will let you know when it is done. Please do not upload for PPV or to Project Gutenberg until after you receive notification that the missing pages have been added to the project.

Adding translations

(click 'expand' to open)
Note -- French translation rolled out 2017-04-25

All translations should be done on the test site.

If you feel comfortable updating the PO file for your locale directly, and are the only translator for the locale, there should be no need to coordinate with others. However, it's a good idea to recruit others to help you fine-tune the translations.

If you are the only person who is doing the translating, and don't feel comfortable updating the PO file yourself, let the site Translation Coordinator know.

If you are one of multiple translators, there should be one person coordinating the translation effort for your locale. Preferably, the coordinator for the locale will feel comfortable with updating the PO file, but again, if not, contact the site Translation Coordinator.

Using poedit or some form of a poeditor (if you are familiar with the process and have a preferred editor) as part of the process mades it much easier to view the whole message, and to avoid mistakes in the markup in the PO file. PO files are text files, and fully editable with a text editor, but long strings that are broken over several lines can be confusing to translate.

The PO file contains *all* strings in the DP code that have been marked up for translation, even those of lower priority that non-admin users will never see, so it's important to have a way to tell where the strings to be translated come from.

The Loco online PO editor is perfectly acceptable to use, but has no easy way to tell where the string comes from. Its advantage is that you don't have to install anything on your computer.

Poedit has to be installed on your computer, and has a means to tell where the strings come from in the code. It's available for Windows, Mac and Linux.

If there's not enough context for you to determine the correct translation (this can be especially problematical for very short strings), please ask!

Words needing context differentiation

Also known as disambiguation. Where the strings are longer, and unique, context is usually not a problem. Where the word is by itself, or with maybe one other word, and the single word or word in combination is used in multiple places, it can be a problem.

Words identified in DP Code Text Localization page:

  • Completed
  • Available
  • None -- resolved all instances of "None" with initial cap.
  • none -- standalone, not capitalized
  • all
  • Bad
  • Unknown
  • Edit -- should be generally translated to mean "modify" or "modification", not "edition"

As of 11:42, 16 April 2017 (EDT), most of the above still need to be investigated.

String length

For a lot of things, the difference between the length of the original English and the length of the translation doesn't matter. In a few cases, it really does.

The length of the translation of the caption/graph header must not exceed the width of the graph plus label text. It won't wrap; it'll be truncated.
Last Edit of Project Info
Dernière Édition des Infos du Projet
Last State Change
Dernière Modification de l'État du projet
The way things are currently configured, row labels adjust according to the content. Perhaps a better place to look is at the column labels for the round pages. It works, but it's ugly -- so should that be a consideration? (Column labels may also appear too long in English.)

Random Rules

Mostly not translated. How will this be handled?

Notes from lvl's pages

Going through lvl's localization related pages and making notes of comments that seem most relevant to the current effort. User:Lvl/Devel/I18n TODO list, User:Lvl/Devel/Distributed gettext fixing effort. He recognized the need for context disambiguation, but at that time we couldn't install a recent enough version of gettext() to use it. He's got a lot of stuff that specifically talks about the code end of things which I'm not qualified to comment on, so my notes here will have to do specifically with things that translators need to be aware of, or that I need to touch base with Casey about.

  • Need for short names in UI

Recognized the need for random rule translation. Not sure I understand his proposal, though.

Also commented about translating emails.

  • 403 and 404 text not translated. Upon investigation, these are not within the c directory, but at the same level as. The page headers have the _() markup, but are not included in the POT. The rest of the text on the page doesn't have the markup at all. Another one that might be useful to translate is down-index.php, which is at the same level (directly in htdocs).
  • Comments about jpgraph and collisions between gettext() and the image cache -- I'm assuming this has been resolved, since the graph text seems to be being translated.
  • Translator icon in the stats -- According to lvl: "This does not need a database change, merely three lines added in stats/include/, function showMbrRoles()". (also needs an icon) (is this something we want to do?)


Where a directory contains a mixture of priorities, relevant files will be listed separate.y, but otherwise, directories/subdirectories are listed.

High priority

  • activity_hub.php and default.php
  • anything in the accounts directory that has translatable text.
  • tools/proofers -- anything in this directory that has translatable text should probably be treanslated
  • faq/faq_central.php -- lvl classified as high priority. It's not currently translated that I can see. It's a PHP page that is a mixture of PHP and HTML. Since the "Help" link in the navbar is to this page, it probably ought to be translated. Most of what's listed there is now in the DP Official Documentation in the wiki, but as long as there's such a high-profile link to this document, it probably should be translated. (Casey will work on this.)
  • Other files in the faq/ directory: font_sample.php, pophelp/prefs/* and pophelp/teams/*, privacy, prooffacehelp.php, simple_proof_rules.php (it only outputs the header, but the header is not currently marked up for translation), site_progress_snapshot_legend.php (not currently marked up for translation)
  • userprefs.php
  • Anything in pinc that has translatable text should probably be translated.
  • in the tools directory: change_sr_commitment.php, changestate.php, pool.php, request_access.php, set_project_event_subs.php, set_project_holds.php and upload_text.php
  • in the tools/project_manager/ directory: diff.php,, generate_post_files.php, page_detail.php,
  • in the tools/post-proofers/ directory: smooth_reading.php
  • stats/members/, stats/teams/ (probably most stuff that's in stats/?)

Medium priority

Not as important as the high-priority stuff that might affect new users from the beginning, but should be done.

  • anything in the quiz/ directory
  • anything in the tools/post-proofers/ directory that hasn't already been translated.

Low Priority

faq/pophelp/project_manager/*? -- the only two files there are HTML files so may need to be refactored. Both appear to be pretty old. Either I'm totally inept at finding things, or these files are (no longer) referenced from the code?

  • anything in the tools/project_manager/ directory that isn't translated elsewhere.

Very Low Priority

  • tools/authors/ -- most of what's displayed via listing.php and index.html (which appears to forward to listing.php?) is translated elsewhere.


May not need to be translated at all. At this point in time, it's pretty important for anyone in an administrative position to be able to communicate effectively in English. The only things that should be in this category are those that are seen only by squirrels and translators, or code that is not currently implemented.

  • Anything in tools/site_admin or locale
  • Anything in sample (not currently in use)
  • tools/proofers/md_*, tools/proofers/hiero/* (currently unused code)

Referenced articles

User:Lvl/Devel/Distributed gettext fixing effort
It's fairly out-dated, but has some useful information.
User:Lvl/Devel/I18n TODO list
Also outdated, but has useful information. I haven't studied it closely enough and correlated it with the current effort.
DP Code Text Localization
Listed here to keep track of it.
Site Translation
Compare this with the Translation FAQ document once the updated version is rolled out to TEST and PROD:
More relevant to translating stuff that's kept in the wiki, and may need to be updated, but has some useful comments.