{"diffoscope-json-version": 1, "source1": "/srv/reproducible-results/rbuild-debian/r-b-build.khT31bAp/b1/jed-extra_2.5.7-2.1_i386.changes", "source2": "/srv/reproducible-results/rbuild-debian/r-b-build.khT31bAp/b2/jed-extra_2.5.7-2.1_i386.changes", "unified_diff": null, "details": [{"source1": "Files", "source2": "Files", "unified_diff": "@@ -1,2 +1,2 @@\n \n- 91518129df6427835fc1fb1a8d355240 475780 editors optional jed-extra_2.5.7-2.1_all.deb\n+ b7dc4325b7c0650e1aeab54acc14b5e1 478452 editors optional jed-extra_2.5.7-2.1_all.deb\n"}, {"source1": "jed-extra_2.5.7-2.1_all.deb", "source2": "jed-extra_2.5.7-2.1_all.deb", "unified_diff": null, "details": [{"source1": "file list", "source2": "file list", "unified_diff": "@@ -1,3 +1,3 @@\n -rw-r--r-- 0 0 0 4 2021-01-03 13:24:36.000000 debian-binary\n -rw-r--r-- 0 0 0 6076 2021-01-03 13:24:36.000000 control.tar.xz\n--rw-r--r-- 0 0 0 469512 2021-01-03 13:24:36.000000 data.tar.xz\n+-rw-r--r-- 0 0 0 472184 2021-01-03 13:24:36.000000 data.tar.xz\n"}, {"source1": "control.tar.xz", "source2": "control.tar.xz", "unified_diff": null, "details": [{"source1": "control.tar", "source2": "control.tar", "unified_diff": null, "details": [{"source1": "./control", "source2": "./control", "unified_diff": "@@ -1,12 +1,12 @@\n Package: jed-extra\n Version: 2.5.7-2.1\n Architecture: all\n Maintainer: Wookey \n-Installed-Size: 2005\n+Installed-Size: 2007\n Recommends: jed (>= 0.99.18) | xjed (>= 0.99.18), slsh\n Suggests: slang-gdbm, dict, slang-curl, www-browser, a2ps, slang-sqlite, slang-expat, slang-wildcard, install-info\n Enhances: jed, xjed\n Provides: dict-client, info-browser, man-browser\n Section: editors\n Priority: optional\n Homepage: http://jedmodes.sourceforge.net/\n"}, {"source1": "./md5sums", "source2": "./md5sums", "unified_diff": null, "details": [{"source1": "./md5sums", "source2": "./md5sums", "comments": ["Files differ"], "unified_diff": null}]}]}]}, {"source1": "data.tar.xz", "source2": "data.tar.xz", "unified_diff": null, "details": [{"source1": "data.tar", "source2": "data.tar", "unified_diff": null, "details": [{"source1": "file list", "source2": "file list", "unified_diff": "@@ -28,15 +28,15 @@\n -rw-r--r-- 0 root (0) root (0) 3790 2005-03-10 15:34:26.000000 ./usr/share/doc/jed-extra/mode-doc/calc_sl.html\n -rw-r--r-- 0 root (0) root (0) 385 2005-03-10 15:34:30.000000 ./usr/share/doc/jed-extra/mode-doc/cua.hlp\n -rw-r--r-- 0 root (0) root (0) 5537 2005-03-10 15:34:33.000000 ./usr/share/doc/jed-extra/mode-doc/custmode_sl.html\n -rw-r--r-- 0 root (0) root (0) 619 2005-03-10 15:34:45.000000 ./usr/share/doc/jed-extra/mode-doc/help.hlp\n -rw-r--r-- 0 root (0) root (0) 2278 2009-10-05 13:04:06.000000 ./usr/share/doc/jed-extra/mode-doc/ispell.otl.gz\n -rw-r--r-- 0 root (0) root (0) 2762 2005-03-10 15:34:56.000000 ./usr/share/doc/jed-extra/mode-doc/jedasp_sl.html\n -rw-r--r-- 0 root (0) root (0) 5264 2005-03-10 15:35:08.000000 ./usr/share/doc/jed-extra/mode-doc/keywords_sl.html\n--rw-r--r-- 0 root (0) root (0) 7212 2005-11-09 15:32:57.000000 ./usr/share/doc/jed-extra/mode-doc/po_mode.hlp.gz\n+-rw-r--r-- 0 root (0) root (0) 9813 2021-01-03 13:24:36.000000 ./usr/share/doc/jed-extra/mode-doc/po_mode.hlp.gz\n -rw-r--r-- 0 root (0) root (0) 1959 2005-03-10 15:35:24.000000 ./usr/share/doc/jed-extra/mode-doc/sql_sl.html\n -rw-r--r-- 0 root (0) root (0) 7301 2005-03-10 15:35:26.000000 ./usr/share/doc/jed-extra/mode-doc/temabbrv_sl.html\n -rw-r--r-- 0 root (0) root (0) 9576 2007-07-23 11:43:27.000000 ./usr/share/doc/jed-extra/mode-doc/tokenlist_sl.html\n -rw-r--r-- 0 root (0) root (0) 165 2005-03-10 15:35:34.000000 ./usr/share/doc/jed-extra/mode-doc/vi.hlp\n -rw-r--r-- 0 root (0) root (0) 3668 2005-03-10 15:35:37.000000 ./usr/share/doc/jed-extra/mode-doc/window_sl.html\n drwxr-xr-x 0 root (0) root (0) 0 2021-01-03 13:24:36.000000 ./usr/share/jed/\n drwxr-xr-x 0 root (0) root (0) 0 2021-01-03 13:24:36.000000 ./usr/share/jed/compile/\n"}, {"source1": "./usr/share/doc/jed-extra/mode-doc/po_mode.hlp.gz", "source2": "./usr/share/doc/jed-extra/mode-doc/po_mode.hlp.gz", "unified_diff": null, "details": [{"source1": "po_mode.hlp", "source2": "po_mode.hlp", "unified_diff": "@@ -1,216 +1,252 @@\n ***KEYBINDINGS FOR PO_MODE***\n \n NAVIGATION: MODIFICATION:\n \n b - scroll up one page _ - undo\n-f - next fuzzy TAB - edit entry\n-F - previous fuzzy ENTER - edit entry\n+f - next fuzzy TAB or ENTER - edit entry\n+F - previous fuzzy\n @ - show current entry no. w - copy msgstr\n g - go to entry number y - insert msgstr\n-l - toggle limited view Backspace - flag entry fuzzy or\n-n - next entry obsolete entry if already\n-o - next obsolete fuzzy\n-O - previous obsolete ESC-Backspace - remove fuzzy flag\n-p - previous entry ctrl-? F - flag all entries fuzzy\n-t - next translated ESC-Enter - copy msgid to msgstr\n-T - previous translated DEL - delete obsolete entry\n-u - next untranslated E - edit entire file\n-U - previous untranslated H - replace headers\n-ESC-# - next translator comment K - cut msgstr\n-. - top justify entry R - replace in msgstrs\n- # - edit translator comment\n- ctrl-? # - remove translator comment\n- COMPENDIUMS: \n- \n-B - add buffer to comp. MISC:\n-I - init. w/compendium(s) \n-+ - make current translation c - compile *.po -> *.mo\n- preferred in compendium C - decompile *.mo -> *.po\n-* - get fuzzily matching G - grep in source dir\n- translation from comp. ctrl-? s - spell check po-file\n-ctrl-? d - add dir to compendium M - mail team or robot\n- s - view source reference\n- S - set source path\n- WORDLISTS: V - validate file\n- ctrl-? E - change encoding\n-d - look up word in ctrl-? u - update po-file\n- wordlist(s) \\ - toggle wrapping\n-D - look up all words in = - po statistics\n- wordlists(s) ? - show this help file\n-ctrl-d - look up definitions \n- for a word in all DICT \n- dictionaries \n+l - toggle limited view Backspace - flag entry fuzzy\n+n - next entry ESC-Backspace - remove fuzzy flag\n+o - next obsolete ctrl-? z - flag all entries fuzzy\n+O - previous obsolete ESC-Enter - copy msgid to msgstr\n+p - previous entry DEL - delete obsolete entry\n+t - next translated E - edit entire file\n+T - previous translated H - replace headers\n+u - next untranslated ctrl-? k - cut msgstr\n+U - previous untranslated ctrl-? l - replace from listfile\n+ESC-# - next translator comment R - replace in msgstrs\n+. - top justify entry # - edit translator comment\n+space - next unfinished entry ctrl-? # - remove translator comment\n+ A - Translate w/Apertium\n+ ctrl-? A - Update Untranslated w/Apertium\n+ ctrl-? F - Update Untranslated/Use Fuzzy w/Apertium\n+ ctrl-? . - detect some ortograhpic\n+ errors\n+ \n+ COMPENDIUMS: MISC:\n+\n+ctrl-? a - add buffer to comp. c - compile *.po -> *.mo\n+ctrl-? c - init. w/compendium(s) C - decompile *.mo -> *.po\n+ctrl-? d - add dir to compendium G - grep in source dir \n+ctrl-? p - set compendium ctrl-? s - interactive spell check\n++ - make current translation L - list and correct misspelled words\n+ preferred in compendium M - mail team or robot\n+/ - translate single entry s - view source reference \n+ from compendium S - set source path \n+ V - validate file \n+ D - create and write diff between two po-files\n+ d - look up word in wordlist(s)\n+ I - count words and characters\n+ ctrl-? E - change encoding \n+ ctrl-? u - update po-file w/newer \n+ ctrl-? i - check in file w/RCS\n+ ctrl-? o - check out file w/RCS\n+ ctrl-? t - count number of word\n+ occurences in msgstrs\n+ \\ - toggle wrapping \n+ = - po statistics \n+ ? - show this help file\n \n \n- \n ***KEYBINDINGS FOR PO_EDIT_MODE***\n \n-\n TAB - finish editing entry\n-ctrl-? ctrl-c - finish editing entry\n-ctrl-? ctrl-k - discard changes\n-ESC + - increase msgstr window\n-ESC - - decrease msgstr window\n-\n+ctrl-c ctrl-c - finish editing entry\n+ctrl-c ctrl-k - discard changes\n \n-NOTE: The question mark in the ctrl-? sequence refers to the binding\n-for the letter in the reserved key prefix which varies with\n-emulations. For Emacs and Jed emulations it is 'c' so you can exchange\n-ctrl-? with ctrl-c in the key bindings above.\n- \n- \n ***MOUSE ACTIONS IN PO_MODE***\n \n - left button double click: look up translation for word at mouse point in\n wordlist. May only work in xjed.\n \n+NOTE: The question mark in the \"ctrl-?\" sequence refers to the binding\n+for the letter in the \"reserved key prefix\" which varies with editor\n+emulations. For Emacs and Jed emulations it is 'c' so you can exchange\n+ctrl-? with ctrl-c in the key bindings above. In the references to\n+keybindings that follows herein, \"ctrl-c\" is used. You must type\n+ctrl-c, release both keys and then type the letter.\n+\n+The \"esc\" key can generally be substituted with the \"alt\" key so\n+\"esc-enter\" is the same as \"alt-enter\"\n \n- 2. Optional Helper Programs:\n \n-- spellutils (http://home.worldonline.dk/byrial/spellutils/)\n- usually available as a rpm/deb package.\n+ ***Important***\n+ \n+See section 11. Suggested Editing Work Flow\n \n-- aspell or ispell\n+ \n+ 1. Installation and Customization\n \n-- the gettext package (msgfmt, msgcat, msgmerge, msgconv, etc.)\n+ 1.1. Installation\n \n-- grep.sl (necessary for grepping in source directory)\n- available from http://jedmodes.sourceforge.net/mode/grep/\n+First, of course, you need to install the Jed editor. It is packaged\n+for every Linux-distribution, I believe, so you can just use your\n+package manager to install it. On Debian based systems, which include\n+Ubuntu, you would do:\n+ \n+ sudo apt-get install jed xjed\n+ \n+which will install both the terminal and X Window versions of the\n+editor.\n \n-- the dict client and server programs plus one or more dictionaries\n+Copy the files po_mode.sl and po_mode.hlp to a directory in your jed\n+library path, e.g. /usr/share/jed/lib. First make sure the permissions\n+on the files are sufficient:\n \n-- the file(1) utility\n+ chmod 0644 po_mode.sl po_mode.hlp\n+ sudo cp po_mode.sl po_mode.hlp /usr/share/jed/lib\n \n- 3. Notes on Customization:\n+In the file ~/.jedrc or /etc/jed.conf, insert the following lines:\n \n-You should copy/paste the following block of variables into your .jedrc\n-and edit their values to match your own settings. Here they are\n-exemplified with mine:\n+ autoload (\"po_mode\", \"po_mode\");\n+ add_mode_for_extension (\"po\", \"po\");\n+ add_mode_for_extension (\"po\", \"pot\");\n+ \n+Then upon loading a po-file into the editor, the mode will be\n+activated automatically.\n \n----- copy/paste begin -----\n+ 1.1.1. Optional Helper Programs:\n \n-%% User variables specific for po_mode\n+Install the following programs. You can do without them, but much\n+functionality will be lost then:\n+\n+ - the gettext package (msgfmt, msgcat, msgmerge, msgconv, etc.)\n+ - aspell or hunspell\n+ - the file(1) utility\n+ - rcs, the Revision Control System\n+ - wdiff, the word difference utility\n+ - grep.sl from http://jedmodes.sourceforge.net/mode/grep/\n+ - apertium, the machine translation system plus relevant\n+ dictionaries.\n+\n+\n+ 1.2. Customization:\n+\n+You should copy/paste the following block of variables into your\n+~/.jedrc or /etc/jed.conf and edit their values to match your own\n+settings. Below, the settings are exemplified with mine:\n+\n+%% --- User variables specific for po_mode - copy/paste begin ---\n \n variable\n- Translator = \"Morten Bo Johansen \",\n- Language = \"Danish\",\n+ Translator = \"Morten Bo Johansen \",\n Team_Email = \"\",\n- Charset = \"iso-8859-1\",\n- Nplurals = \"2\",\n- Plural = \"(n != 1)\",\n- Spell_Prg = \"aspell\",\n- Spell_Dict = \"dansk\",\n- Compendium = \"/home/mojo/l10n/compendium_pomode\",\n- Compendium_Gettext = \"/home/mojo/l10n/compendium_gettext\",\n- Custom_Wordlist = \"/home/mojo/l10n/wordlist_pomode\",\n- Dict_Dictionary = \"fd-eng-swe\",\n- Revise_Date = 1,\n- Gettext_Use_Fuzzy = 0,\n- Use_Compendium = 3,\n- Use_Wordlist = 3,\n- Dict_Minimum_Wordsize = 4;\n+ Language = \"Danish\",\n+ LangCode = \"da\",\n+ CountryCode = \"dk\",\n+ Encoding = \"utf-8\",\n+ SrcBaseDir = \"/home/mojo/src\",\n+ Apertium_Langs = \"nob-dan\",\n+ Spell_Prg = \"aspell,\n+ Compare_With_Languages = \"sv,nb,de,fr,nl\",\n+ Compendium = \"/home/mojo/.compendium_pomode\",\n+ Use_Microsoft_Wordlist = 1;\n \n-%% Other useful variables\n+%% --- User variables specific for po_mode - copy/paste end ---\n+\n+%% Other useful variables, paste into ~/.jedrc\n \n variable\n- GrepCommand = \"grep -H -n -r -i\",\n+ Grep_Cmd = \"grep -H -n -r -i\",\n Dabbrev_Default_Buflist = 1,\n Dabbrev_Look_in_Folds = 1;\n \n----- copy/paste end -----\n-\n Explanation of the user variables:\n \n - Translator: full name and email address of you, the translator.\n \n - Language: your language - use English adjective, e.g. \"German\".\n \n-- Team_Email: email address of your language team.\n-\n-- Charset: the default character set encoding in the header of the po-file\n- also used as encoding in the gettext compendium.\n-\n-- Nplurals: if po-file has plural forms: how many plural forms does your\n- language have? See /usr/share/doc/gettext-doc/gettext_10.html#SEC1.\n-\n-- Plural: See /usr/share/doc/gettext-doc/gettext_10.html#SEC1.\n-\n-- Spell_Prg: program to use for spell checking, use \"ispell\" or \"aspell\".\n+- LangCode: http://en.wikipedia.org/wiki/List_of_ISO_639-1_codes\n \n-- Spell_Dict: language dictionary for ispell/aspell,\n- (e.g. \"deutsch\" for German).\n+- CountryCode: http://en.wikipedia.org/wiki/ISO_3166-1_alpha-2\n \n-- Compendium: path to native compendium file.\n-\n-- Compendium_Gettext: path to gettext compendium file, created with msgcat.\n-\n-- Custom_Wordlist: name and path of custom wordlist.\n-\n-- Dict_Dictionary: you must set the dict dictionary to use, you can get\n- a listing of installed dictionaries with the shell\n- command \"dict -D\".\n+- Team_Email: email address of your language team.\n \n-- Revise_Date: set revision date when saving: 0 = ask, 1 = always.\n+- Encoding: The default character set encoding in the header of the po-file\n+ also used as encoding in the gettext compendium.\n \n-- Gettext_Use_Fuzzy: if fuzzy matching is used with gettext compendiums.\n+- Compendium: Path to gettext compendium file.\n \n-- Use_Compendium: what compendium(s) to use:\n- 1 = native po_mode compendium\n- 2 = gettext compendium\n- 3 = both\n+- SrcBaseDir: The path to the directory where you usually keep the\n+ sources for the programs you translate.\n \n-- Use_Wordlist: what wordlist(s) to use:\n- 1 = custom wordlist\n- 2 = dict freedict translation dictionary\n- 3 = both\n+- Compare_With_Languages: po-files in languages that you want to compare\n+ your translations with. Comma separated list of\n+ iso country codes as listed in\n+ http://en.wikipedia.org/wiki/List_of_ISO_639-1_codes\n+ Change the codes below to your liking. NB! This\n+ requires that the msgid numbers are in sync\n+ between all the po files. If this is not the case\n+ it can usually be accomplished by running \"make\n+ update-po\" in the ../po subdirectory of the\n+ sources directory This example will compare with\n+ Swedish, Norwegian Bokm\u00e5l, German, French and\n+ Dutch.\n \n-- Dict_Minimum_Wordsize: do not query dictd server for words less\n- than n characters.\n+- Apertium_Langs: Language pair for machine translation system, Apertium\n+ E.g. \"en-es\" will use the English-to-Spanish pair.\n \n- 4. Mode Hooks:\n+ 1.2.1. Mode Hooks:\n \n There are two mode_hooks that may be used to control some settings\n relating to the po_mode and po_edit_mode buffers respectively. Thus in\n-your .jedrc you might insert e.g.:\n+the file ~/.jedrc or /etc/jed.conf you might insert e.g.:\n \n define po_mode_hook ()\n {\n use_dfa_syntax (1);\n }\n \n define po_edit_mode_hook ()\n {\n ispell_change_dictionary (\"deutsch\");\n flyspell_mode;\n+ set_abbrev_mode (1);\n+ local_setkey (\"dabbrev\", \"\\ea\"); % only if you haven't set it globally\n }\n \n The former enables DFA syntax highlighting that conveniently draws\n attention to important things like blank space at beginning/end of\n-lines and newline literals.\n-\n- 5. Notes On Editing (po_edit mode):\n-\n-To a large extent this mode is emulating the Emacs po-mode, and as you\n-may see from the key bindings above, the library actually contains two\n-modes: when you read the po-file into the editor, you are in \"po_mode\"\n-and the file is read-only. When you edit an entry, a new buffer is\n-opened and you enter \"po_edit_mode\" where you are actually filling in\n-the translation or editing an existing translation.\n+lines and newline escape sequences. The variables in the\n+\"po_edit_mode_hook\" enable spell checking \"on the fly\" by highlighting\n+misspelled words in the edit buffer, if you installed flyspell.sl from\n+http://jedmodes.sourceforge.net/mode/ispell/\n+\n+\"set_abbrev_mode\" enables \"dynamic abbreviations in the editing buffer\n+which means that you can use a keyboard shortcut such as e.g. \"alt-a\" to\n+complete a word\n+\n+ 2. Notes On Editing (po_edit mode):\n+\n+Hit or on an entry to open the window with the editing\n+buffer. When you have finished the translation, then hit again\n+to close the editing window. You can also hit ctrl-c ctrl-c, i.e.\n+press the control key while hitting 'c' twice.\n+\n+To a large extent this mode is emulating the Emacs po-mode, and\n+as you may see from the key bindings above, the library actually\n+contains two modes: when you read the po-file into the editor, you are\n+in \"po_mode\" and the file is read-only. When you edit an entry, a new\n+buffer is opened and you enter \"po_edit_mode\" where you are actually\n+filling in the translation or editing an existing translation.\n \n The entries are either single-line or multi-line strings. Multi-line\n strings are always terminated at the point at which they are to be\n wrapped by the C-like newline escape character \"\\n\". If there is one\n or more of these escape sequences in the msgid, it is a multi-line\n string. Thus the two types of strings may look like this:\n \n Example single-line string:\n \n msgid \"\"\n- \"You may also specify modifaction to the actions which will be taken. To do \"\n+ \"You may also specify modifiction to the actions which will be taken. To do \"\n \"so, type an action character followed by one or more package names (or \"\n \"patterns). The action will be applied to all the packages that you list. \"\n \"The following actions are available:\"\n \n Example multi-line string:\n \n msgid \"\"\n@@ -219,238 +255,382 @@\n \"Convert FILE(s) or standard input to PostScript.\\n\"\n \"\\n\"\n \"Mandatory arguments to long options are mandatory for short options too.\\n\"\n \"Long options marked with * require a yes/no argument, corresponding\\n\"\n \"short options stand for `yes'.\\n\"\n \n For single-line strings, just type along with the line being wrapped\n-at column 78 and with a single space being inserted automatically at\n-the end of the line, so you can follow what you're typing in. Do not\n-use the enter-key here at all (it is disabled actually).\n+at your chosen wrap point and with a single space being inserted\n+automatically at the end of the line, so you can follow what you're\n+typing in.\n \n For multi-line strings always use the enter-key to break the line at\n-the point where you want the newline literal \"\\n\" to be inserted. Do\n-not insert trailing newline literals or spaces. They are inserted\n-automatically when you leave the po_edit buffer.\n-\n-For multi-line strings a hyphen (-) is inserted into the end of\n-the po_edit buffer to draw your attention to where this is.\n+the point where you want the newline escape sequence \"\\n\" to be\n+inserted. Do not insert trailing newline escape sequences or spaces and\n+do not escape double quotes or envelop the translation in double quotes.\n+It is all taken care of automatically when you leave the po_edit buffer.\n \n To repeat: In general you do not need to worry about anything relating\n to the formatting of the message string, it is all taken care of\n-automatically which means that newline literals \"\\n\" are inserted in\n-the right places, embedded double quotes are escaped and\n-word-delimiting whitespace at the end of wrapped lines is inserted.\n-\n- 6. Spell Checking:\n-\n-Keeping your work free from misspellings is an essential part of the\n-work of a translator, and if you installed spellutils as mentioned\n-above, you can spell check the entire po-file, isolating the msgstrs\n-from within po_mode (typing ctrl-c s). Alternatively there is a cool\n-mode called flyspell.sl available from\n-http://jedmodes.sourceforge.net/ that will highlight misspelled words\n-as you go (\"on the fly\"). Installing this mode and translating into\n-e.g. German, you can put these two lines into your po_edit_mode_hook:\n+automatically.\n \n- ispell_change_dictionary (\"deutsch\");\n- flyspell_mode;\n+ 3. Spell Checking:\n \n- 7. Compendiums:\n+Aspell and hunspell are supported.\n+\n+You must of course install the spell dictionaries for your language.\n+In addition you should also install an English spell dictionary, since\n+there are often English words in the msgstrs that should not be\n+translated. The spell checking in this mode tries with both your own\n+language and English, if an English dictionary is found, thus weeding\n+out all the false English positives that would occur if spell checking\n+was only done in your own language.\n+\n+Keeping your work free from misspellings is an important part of the\n+work of a translator. You can spell check the entire po-file\n+interactively, isolating the msgstrs from within po_mode (typing\n+ctrl-c s). Better still, probably is to type 'L' which will pop up a\n+list of misspelled words. You can then hit enter on one such word and\n+correct its spelling from the resulting prompt. The word will then be\n+corrected throughout the msgstrs of the po-file and then removed from\n+the list. Typing '-' on a word in the list will remove the word from\n+the list. Typing '+' on a word in the list will add the word to the\n+spell program's personal wordlist, so it will not be seen as a\n+misspelling in the future. 'q' closes the list window.\n+\n+Alternatively there is a cool mode called flyspell that will highlight\n+misspelled words as you go (\"on the fly\"). See above under 1.2.1. Mode\n+Hooks.\n+\n+\n+ 3.1 Check mismatch in case of first letter and end punctuation\n+ \n+ctrl-c . (period) will parse the file for such minor errors. Affected\n+entries will be marked fuzzy.\n+\n+ 4. Compendiums:\n \n Compendiums are files with translatable strings and their accompanying\n-translations. They are used as a reference whence to fetch\n-translations and merge them into the current po-buffer. Gettext\n-compendiums are in the gettext po-file format and the msgmerge program\n-from the gettext utilities is being used to fetch translations from\n-the compendium and merge them with a po-file. Msgmerge's matching of\n-msgids can be exact and/or fuzzy. I think the fuzzy matching is too\n-far off the mark so as to be really usable and it is also slow.\n-Therefore I have added a native compendium which is in a different\n-format. It is reasonably fast both to update and to fetch translations\n-from and has a sort of fuzzy matching which leaves out punctuation,\n-special characters, whitespace and newline literals in the comparison,\n-in addition to being case-insensitive. So I should recommend the\n-following settings in your .jedrc\n-\n- variable Gettext_Use_Fuzzy = 0;\n- variable Use_Compendium = 3;\n-\n-The first ensures that only exact matching is used when getting\n-translations from the gettext compendium, and the second ensures that\n-both the gettext and the native compendiums are updated as well as\n-translations being fetched from both. Entries filled out with\n-translations fetched from the native compendium are flagged fuzzy.\n-Thus, translations for all exactly matching msgids found in the\n-gettext compendium are entered, in addition to all fuzzily matching\n-msgids found in the native compendium. The exact matches will always\n-take precedence.\n+translations. You can use them to translate a whole po-file or a\n+single entry automatically.\n+\n+ 4.1 Create a Compendium:\n+ \n+A compendium can be created with the contents of the current buffer\n+(the contents of the file you are looking at in the editor) using the\n+shortcut \"ctrl-c a\". You will be asked if you want to make all the\n+translations \"immutable\", i.e. they will never be overwritten when\n+updating the compendium later.\n+\n+An entire directory of po-files can be added to a compendium in one\n+fell swoop using the shortcut \"ctrl-c d\".\n \n Menu items are available to update compendiums with the contents of\n the current buffer or to update the compendium with a directory of\n po-files. In the latter case only files with the \".po\" extension will\n be added and an integrity check will be done on each file before it is\n added to the list of files to go into the compendium.\n \n-When updating the Gettext compendium, you will be asked if you want to\n+When updating the compendium, you will be asked if you want to\n overwrite matching entries in the compendium. Answering yes here will\n let translations in the updating file(s) for msgids matching those in\n the compendium be overwritten. Conversely, answering no will keep\n translations in the compendium for matching msgids intact.\n \n If you feel that a translation fetched from the compendium is\n annoying, you can either edit the compendium manually or you can just\n modify the translation to your liking and then hit '+' in po-mode,\n then the new translation will overwrite the old one in the compendium\n and be used for the future. You can also update the compendium as per\n above by letting the entries be overwritten when you have finished\n editing the file.\n \n-Fuzzily matching translations from the gettext compendium for a single\n-entry may be fetched by typing \"*\". The matching is rather crude; it\n-only matches the 20 first characters in the msgid as a substring in\n-msgids in the compendium and stops at the first match.\n-\n- 8. Wordlists:\n-\n-Translations for words or phrases can be looked up either in a custom\n-wordlist or in a freedict translation dictionary. Lookups in the two types\n-of wordlists can be combined. You make the lookup by double clicking on a\n-word with the mouse or by typing 'd' on a word. Double clicking may only\n-work in xjed. If you have marked a region, a lookup for the phrase in that\n-region will be performed. If a translation is found, you will be presented\n-with a default translation. If you hit you will see a list of possible\n-translations in case there is more than one. You can cycle between them with\n-. Hitting will then insert the translation into the msgstr\n-or into the po_edit buffer if you are in po_edit mode. Ctrl-g cancels.\n-\n- 8.1. Format of the Custom Wordlist:\n-\n-The custom wordlist assumes the following line format:\n-\n- word_to_translate: translation_1, translation_2, translation_3, [...]\n-\n-i.e. the word to translate followed by a colon followed by one or more\n-spaces and/or tabs followed by a comma-separated list of translations.\n-Entries might look like this in a wordlist with some Danish translations:\n-\n- memory: hukommelse, internt lager\n- memory exhausted: hukommelse opbrugt\n- memory leak: hukommelsesl\u00e6k\n-\n-The custom wordlist is chiefly meant to be a compilation of translations of\n-technical or special words/terms that you or your language team maintain\n-yourself.\n-\n- 8.2. Freedict Translation Dictionaries:\n-\n-The dict lookup function is designed to work with the freedict translation\n-dictionaries. Currently (as of October 2005) the following\n-English- dictionaries exist - with the Debian package names\n-to the left:\n-\n- dict-freedict-eng-deu - Dict package for English-German\n- dict-freedict-eng-fra - Dict package for English-French\n- dict-freedict-eng-hun - Dict package for English-Hungarian\n- dict-freedict-eng-iri - Dict package for English-Irish\n- dict-freedict-eng-ita - Dict package for English-Italian\n- dict-freedict-eng-lat - Dict package for English-Latin\n- dict-freedict-eng-nld - Dict package for English-Netherlands\n- dict-freedict-eng-por - Dict package for English-Portuguese\n- dict-freedict-eng-rus - Dict package for English-Russian\n- dict-freedict-eng-spa - Dict package for English-Spanish\n- dict-freedict-eng-swe - Dict package for English-Swedish\n- dict-freedict-eng-wel - Dict package for English-Welsh\n-\n-NB! At least in the Ubuntu packages, as of October 2005, the index\n-files are not sorted correctly. If you experience that several words\n-lack a translation where one should be, then do this (assuming that\n-the index files are in /usr/share/dictd:\n-\n- # cd /usr/share/dictd\n- # LC_ALL=C sort -t $'\\t' -k1,1 -bdf freedict-eng-deu.index | \\\n- tee freedict-eng-deu.index > /dev/null\n-\n-to sort e.g. the English-German freedict index file.\n-\n-You can combine lookups in both the custom wordlist and in a freedict\n-dictionary. If a translation is found in both, the translation from the\n-custom wordlist will be presented as the default.\n-\n- 8.3 Auto-translating From Wordlists:\n-\n-You can look up a translation for every word in every msgid in a po-file in\n-a batch run by typing 'D'. The default translations for every matching word\n-are then inserted into the msgstrs automatically. Again you can choose to\n-use the custom wordlist, the freedict dictionaries or both. Using the\n-freedict dictionaries will probably yield some occasionally strange results.\n-The variable \"Dict_Minimum_Wordsize\" controls how many characters a word\n-must consist of before querying the dictd server. Setting it to a reasonably\n-high number, like e.g. 5, is probably a good idea.\n-\n- 8.4. Lexicographical lookup in all installed Dict dictionaries:\n-\n-This will pop up a buffer with all available definitions for the word at\n-point. The function is bound to ctrl-d and comes in handy where you want an\n-in-depth explanation of a word from e.g. the dict-gcide dictionary.\n+A translation for the current entry may be fetched from the compendium\n+by typing \"/\".\n \n- 9. View Source Files or Grep in Source Files:\n+ 5. Wordlists:\n+\n+For Danish users, word translations can be looked up from a specified\n+wordlist. For others, the wordlist from Microsoft's Language Portal\n+can be used. Type 'd' on a word or a highlighted phrase to look it up.\n+Double clicking with the mouse will do the same. The latter may only\n+work in xjed.\n+\n+ 6. View Source Files or Grep in Source Files:\n \n In addition to viewing the source file(s) referenced in the current entry,\n you can also grep for a string in the source files and get a window with a\n listing of all files that contain that expression which you can then select\n for easy viewing: If you have highlighted a string, e.g. with the mouse,\n this string will be seached for, otherwise the word at point will be seached\n for. The highlighting must be done with Jed's mark_region function, i.e. you\n should see an 'm' on the status line. The function is bound to 'G'.\n \n-It also comes in handy when you have an archive with other language\n-translations of the current po-file and want to see how a tricky translation\n-was done by others.\n-\n I recommend putting this line into your .jedrc:\n \n variable GrepCommand = \"grep -H -n -r -i\";\n \n for a recursive, case-insensitive search.\n \n You must get grep.sl from http://jedmodes.sourceforge.net/grep/\n \n- 10. Limit Display to Entries Containing Expression:\n-\n-If you are familiar with the mail user agent Mutt, you will probably have\n-cherished its \"limit\" function whereby you can narrow the index of mail\n-messages to a list containing a specified expression. A limit function is\n-also useful in the context of editing po-files. The limit function in this\n-mode lets you narrow the display to a list of entries containing a certain\n-expression. Like for the grep function mentioned above the limit function\n-also acts on either the word at point, a highlighted string or a typed in\n-expression. The function is bound to 'l' by default (like in Mutt), and\n-typing 'l' again in the limited view toggles off the limitation. It is of\n-course useful, because it lets you see a uniform list of entries containing\n-your expression, so you can e.g. easily compare translations containing this\n-expression to see if it is translated consistently in all of them, or you\n-can limit the display to similarly looking msgid in order to copy\n+ 7. View a translation in other languages\n+ \n+Typing 'm' on an entry will open a window with translations for that\n+entry in languages you have chosen in the configuration variable\n+Compare_With_Languages (see above). Of course it requires that the\n+po-files for these languages are installed. Typically you would have a\n+source archive for the program whose po-file you are translating\n+installed under ~/src (see the SrcBaseDir variable above). You will\n+be asked where to look for the po-files in the other languages. They\n+typically reside in the \"/po\" subdirectory of the source archive.\n+In any case, the names of the files that you want to compare with\n+must have the two-letter language code in them. For instance both\n+\"be.po\" and \"gtkam-0.2.0.be.po\" will be detected if you want to\n+compare with Belarussian.\n+\n+ 8. Limit Display to Entries Containing Expression:\n+\n+If you are familiar with the mail user agent Mutt, you will probably\n+have cherished its \"limit\" function whereby you can narrow the index\n+of mail messages to a list containing a specified expression. A limit\n+function is also useful in the context of editing po-files. The limit\n+function in this mode lets you narrow the display to a list of entries\n+containing a certain expression. Like for the grep function mentioned\n+above the limit function also acts on either the word at point, a\n+highlighted string or a typed in expression. The function is bound to\n+'l' by default (like in Mutt), and typing 'l' again in the limited\n+view toggles off the limitation. It is of course useful, because it\n+lets you see a uniform list of entries containing your expression, so\n+you can e.g. easily compare translations containing this expression to\n+see if it is translated consistently in all of them, or you can limit\n+the display to similarly looking msgids in order to quickly copying\n translations between them.\n \n- 11. Gettext Functions:\n+Hint: To limit to expressions that cross lines, highlight that\n+expression across the lines and then type 'l' to limit to it.\n+\n+ 9. Gettext Functions:\n \n Various wrapper functions using the gettext utilities are included for\n convenience, these are:\n \n-- validation: parse po-file for syntax errors with msgfmt.\n+- validation: parse po-file for syntax errors with msgfmt. Error \n+ entries will be marked fuzzy.\n+\n - compile: compile current buffer into a binary mo-file with msgfmt.\n+\n - decompile: decompile a binary mo-file into a po-file with msgunfmt\n+\n - wrap/unwrap: wrap/unwrap entries with msgcat.\n+\n - update: update current po-buffer to a newer version with msgmerge.\n+\n - convert: convert character encoding with msgconv\n+\n - flag all entries fuzzy with msgattrib\n-- replace words in message strings using msgfilter and sed.\n \n They are all available from the menu.\n \n- --------\n+ 10. Other convenience functions\n+ \n+- Check in the current po-file with RCS\n+\n+- Write a diff file between two versions. The other version may\n+ be under RCS.\n+\n+- Replace a word or a string in the msgstrs.\n+\n+- Replace words or strings in the msgstrs from a listfile. The listfile\n+ must have the format:\n+ \n+ word/string to be replaced : word/string replacement\n+ \n+ each on a line by itself. I.e. words and replacements listed\n+ pairwise separated by a colon. The blankspace around the colon\n+ does not matter. \n+ \n+ If your own language has a closely related language then you could\n+ maintain such a file with translations of words/string from your own\n+ language to that language. E.g. a Russian translator might have a\n+ file with Russian translations of Ukranian words, since the two\n+ languages are closely related and then run a Ukranian po-file\n+ through this function,\n+ \n+ The function \"Count Occurences of Words\", available from the menu,\n+ is handy in determining the frequency of words in connection with\n+ maintaining such a listfile.\n+\n+- Translate or update po-file with the machine translation system, Apertium\n+\n+\n+\n+ 11. SUGGESTED EDITING WORK FLOW\n+ \n+\n+\n+a) Begin by creating a subdirectory \"src\" under your home directory to\n+ hold the source archives for the programs you are translating.\n+ \n+ mkdir -p $HOME/src\n+ \n+ Switch to that directory and fetch the source archive of the\n+ program you are translating, e.g. with\n+ \n+ apt-get source \n+ \n+ or any other command that will fetch the sources. Unpack, if neccesary,\n+ the source archive under $HOME/src.\n+\n+b) Install the machine translation system, Apertium, and all the\n+ language pairs that translate into your language. For instance\n+ for Danish, I have these installed:\n+ \n+ nno-dan\n+ nob-dan\n+ swe-dan\n+\n+ If a po-file has already been translated into, say Norwegian\n+ Bokm\u00e5l (nob), then I can load that file into Jed and type 'A' (or\n+ from the menu: Mode -> Modify -> Translate w/Apertium) to have it\n+ translated into Danish. The quality and comprehensiveness of these\n+ language pairs varies, but the Spanish language pairs in particular\n+ seem to be of both high quality and to be extremely comprehensive,\n+ so if you are a Spanish translator, it seems that you can get\n+ almost all of the work done by Apertium. A Spanish user would make\n+ sure that the language pair \"en-es\" was installed, then fetch the\n+ pot-file (the empty original message catalogue) for the program's\n+ messages to be translated, load it into Jed and then type 'A'. All\n+ the msgstrs will first be pre-filled with the English original\n+ msgid strings and then translated into Spanish. Same procedure\n+ should be used by anyone with a language pair that translates from\n+ English into his own language.\n+ \n+ The Translate w/Apertium function, bound to 'A' is meant to be used\n+ on a whole po or pot-file. Another Apertium function exists to\n+ update untranslated entries in a po-file with Apertium-translated\n+ entries for matching msgids that are fetched from a reference file.\n+ This function is bound to \"ctrl-c A\" (or from the menu: Mode ->\n+ Modify -> Update Untranslated w/Apertium). So let us say that I\n+ have a po-file that I have already partially translated into Danish\n+ and a more updated version of this po-file exists in Norwegian,\n+ then I could type \"ctrl-c A\", choose the Norwegian file (the\n+ reference file) from the prompt to have the untranslated entries in\n+ my own file filled out with the Norwegian translations which in\n+ turn are then translated into Danish with Apertium. A variant of\n+ this function exists whereby also fuzzy translations from the\n+ reference file are translated with Apertium and transferred to your\n+ own file. It is bound to \"ctrl-c F\" (or from the menu: Mode ->\n+ Modify -> Update Untranslated/Use Fuzzy w/Apertium) All entries\n+ that are translated with these two latter functions are marked\n+ fuzzy.\n+\n+C) Create a compendium (see above) from as many different po-files\n+ that have been translated into your language as you can find. You can\n+ get a lot from the site of the Free Translation Project. This command\n+ will get all of the Danish translations from that site and place them\n+ under the \"./translationproject.org/PO-files/da\" subdirectory:\n+ \n+ wget -r --no-parent --reject \"index.html*\" \\\n+ http://translationproject.org/PO-files/da/\n+\n+ Just change the trailing \"da\" subdirectory to your own ISO_639\n+ country code (see section 1.2).\n+\n+ Then open a po-file in jed/xjed and type \"ctrl-c d\" to add a whole\n+ directory of po-files to the compendium. You can also do it from\n+ the menu:\n+ \n+ F10 => Mode => Compendiums and Wordlists => Add Dir to Compendium\n+ \n+ You will be asked for the path to the po-files. Type in the path\n+ above. You can use TAB completion in selecting the path. Since\n+ there may be many hundreds of po-files, it may take a little time\n+ to add them because they are validated first and duplicate entries\n+ are weeded out. (For about 1600 po-files of varying sizes it takes\n+ about two minutes to add them to the compendium on my medium fast\n+ computer.)\n+\n+d) Open the po-file you want to translate in jed/xjed. Type \"ctrl-c i\"\n+ to fill out the entries with translations from the compendium you\n+ just created. You can also use the menu:\n+\n+ F10 => Mode => Compendiums and Wordlists => Initialize w/Compendium\n+ \n+ If your po-file already contained translated entries you will be\n+ asked if you want to overwrite them. If the msgid in your po-file\n+ was identical to the msgid in the compendium, the compendium's\n+ translation will be transferred to your po-file. If there were\n+ minor differences such as punctuation and case differences, then\n+ the entry will be filled out and marked fuzzy.\n+ \n+e) Visit the entries that were filled out and review the translations.\n+ Use 't' to go to the next translated entry and 'f' to go to the\n+ next fuzzy entry. If the entry was flagged fuzzy you may have to\n+ make a minor modifiction to the translation. After having done so\n+ remove the fuzzy flag with alt-backspace.\n+\n+f) If you were not satisfied with the translation from the compendium,\n+ then modify it to your liking and hit '+'. This will transfer your\n+ modified translation to the compendium (you will be asked if you\n+ want to overwrite) and at the same time the translation will be\n+ marked \"immutable\". That means that it will not overwritten when\n+ you update the compendium later. You can have it changed only by\n+ following the same procedure, that is modify the translation and\n+ hit '+'.\n+\n+g) Translate the remaining entries. Be as productive as you can by\n+ using \n+ - dynamic word completions (see above). \n+ \n+ - if there is only a little to translate in a msgid, then\n+ copy it to the msgstr with alt-enter and then modify.\n+ \n+ - look up translations for tricky words/strings at\n+ Microsoft's Language Portal by typing 'd' on a word.\n+ \n+ - use the editor's native navigation features with convenient\n+ keyboard shortcuts in the editing window,\n+ \n+ - check translations for a troublesome entry in other\n+ languages by typing 'm' (see section 7)\n+ \n+ - use the source view (bound to 's') to view the source\n+ context of the msgid if you are in doubt of its meaning.\n+ \n+ - use 'l' to limit the view to entries containing a word\n+ or an expression if there are many of those and you want\n+ to ensure that you have translated them uniformly.\n+\n+h) Fill out the header by typing 'H'. You must set the configuration\n+ variables in section 1.2\n+ \n+i) Spell check the file. I recommend using a list of misspelled words\n+ by typing 'L' and correct the misspelled words by hitting enter on\n+ them.\n+ \n+j) Check punctuation and word case errors by typing \"ctrl-c .\" (ctrl-c\n+ + period).\n+ \n+k) Validate the file, typing 'V'\n+\n+l) When all is translated and there are no fuzzy entries left and the\n+ file validates with no errors, then \n+ \n+ - check the file in with RCS by typing \"ctrl-c i\". The po-file will\n+ be checked in under the ./RCS subdirectory in the directory of the\n+ po-file itself. You can then subsequently write diffs between your\n+ current po-file and an older version in RCS by typing 'D'. Diffs\n+ such as these can be sent to the mailing list of your language team\n+ for a review.\n+ \n+ - finally, add the file to the compendium, with \"ctrl-c a\". You\n+ will be asked if you want to flag all the new translations\n+ \"immutable\" which means that they will not be overwritten on\n+ subsequent updates of the compendium.\n+\n+ --------\n \n Otherwise the explanation of the keybindings above should, I hope,\n make it clear what functionality is available.\n \n-Send comments or suggestions to Morten Bo Johansen \n+Send comments or suggestions to Morten Bo Johansen \n", "details": [{"source1": "encoding", "source2": "encoding", "unified_diff": "@@ -1 +1 @@\n-iso-8859-1\n+utf-8\n"}]}]}]}]}]}]}