1 /*
2  * Copyright (C) 2002-2012, Magnus Hjorth
3  *
4  * This file is part of mhWaveEdit.
5  *
6  * mhWaveEdit is free software; you can redistribute it and/or modify
7  * it under the terms of the GNU General Public License as published by
8  * the Free Software Foundation; either version 2 of the License, or
9  * (at your option) any later version.
10  *
11  * mhWaveEdit is distributed in the hope that it will be useful,
12  * but WITHOUT ANY WARRANTY; without even the implied warranty of
13  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14  * GNU General Public License for more details.
15  *
16  * You should have received a copy of the GNU General Public License
17  * along with mhWaveEdit; if not, write to the Free Software
18  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
19  */
20 
21 
22 /* Automatically generated by gendocs.sh */
23 #include <stdio.h>
24 #include "gettext.h"
25 #include "help.h"
26 
27 int help_page_count = 13
28 ;
29 const char *help_page_titles[] = {
30      N_("General"),
31      N_("Sample view"),
32      N_("Playing"),
33      N_("Recording"),
34      N_("Editing"),
35      N_("Effects"),
36      N_("Quality"),
37      N_("File formats"),
38      N_("Files"),
39      N_("Keyboard shortcuts"),
40      N_("Bug reporting"),
41      N_("Helping out"),
42      N_("Contact"),
43      NULL };
44 
45 static const char * O00_contents[] = {
46      "\n",
47      /* xgettext:no-c-format */ N_("mhWaveEdit is a graphical program for editing sound files. It is completely free (GPL).\n"),
48      "\n",
49      /* xgettext:no-c-format */ N_("You can find the latest release of mhWaveEdit at:\n"),
50      /* xgettext:no-c-format */ N_("http://gna.org/projects/mhwaveedit/\n"),
51      NULL };
52 
53 static const char * D01_contents[] = {
54      "\n",
55      /* xgettext:no-c-format */ N_("The area where you 'see' the contents of the file you are editing, is called the 'sample view'. \n"),
56      "\n",
57      /* xgettext:no-c-format */ N_("In the sample view there is a grey vertical bar called the 'cursor'. The cursor follows the sound wave when you play the sound. You can position the cursor by clicking with the right (2:nd) mouse button. If you do this while you're playing a file, the playing will continue from the new cursor position. You can also position the cursor more exact by using the 'Position Cursor...' command on the Edit menu.\n"),
58      "\n",
59      /* xgettext:no-c-format */ N_("You can place marks in your file by holding down Ctrl and pressing a number from 0 to 9. This will place a mark (green vertical bar) with the same number at the current cursor position. You can later make the cursor go to that position again by just pressing the number. Setting and jumping to marks can be done while playing. To remove a mark, jump to the mark and set it again.\n"),
60      NULL };
61 
62 static const char * D02_contents[] = {
63      "\n",
64      /* xgettext:no-c-format */ N_("Playing a file is simple, just load the file and press the play button. The green play button plays from the current position. The yellow play button plays the current selection, or the entire file if nothing is selected. Stop the playback with the stop button (with the red square). \n"),
65      "\n",
66      /* xgettext:no-c-format */ N_("The playback speed can be varied by adjusting the slider to the far right. \n"),
67      "\n",
68      /* xgettext:no-c-format */ N_("You can do normal editing while the file is playing.\n"),
69      NULL };
70 
71 static const char * D03_contents[] = {
72      "\n",
73      /* xgettext:no-c-format */ N_("Recording is done with 'Record...' on the Play menu, or the Record button (the red circle). A dialog box will pop up where you can select what format you want to record in. After selecting the format, meters and numbers will appear showing info about the volume level of the sound input. \n"),
74      "\n",
75      /* xgettext:no-c-format */ N_("When you want to start recording, press the \"Start recording\" button. When you've recorded everything you wanted to, press the Finish button and the record dialog will disappear and newly recorded sound will show up in a new window.\n"),
76      "\n",
77      /* xgettext:no-c-format */ N_("Currently it is impossible to play and record at the same time, so the playback will stop when you record.\n"),
78      NULL };
79 
80 static const char * D04_contents[] = {
81      "\n",
82      /* xgettext:no-c-format */ N_("You make selections by dragging the mouse over the sample view. You can hear what you've currently selected by clicking on the \"play selection\" button (the button with the yellow arrow) or by selecting 'Play selection' from the Play menu.\n"),
83      "\n",
84      /* xgettext:no-c-format */ N_("You can use the cursor to refine the selection. Use the 'Selection start at cursor' and 'Selection end at cursor' buttons to move the selection starting point or the selection end point to the current cursor position. You can also drag the selection endpoints using the mouse.\n"),
85      "\n",
86      /* xgettext:no-c-format */ N_("The 'Cut' and 'Copy' functions work like in any other software. \n"),
87      "\n",
88      /* xgettext:no-c-format */ N_("The 'Paste' function insert the clipboard contents at the cursor position. The 'Paste over' function works like 'Paste', except that it overwrites the data after the insert position. \n"),
89      "\n",
90      /* xgettext:no-c-format */ N_("The 'Paste mix' function combines the clipboard data with the data at the cursor position.\n"),
91      "\n",
92      /* xgettext:no-c-format */ N_("The 'Paste as new' function opens a new window and puts the clipboard contents into it. \n"),
93      "\n",
94      /* xgettext:no-c-format */ N_("The 'Crop' function deletes all parts of the file that are not selected.\n"),
95      "\n",
96      /* xgettext:no-c-format */ N_("The 'Silence selection' function replaces the selected part with silence. To avoid clicks, the silent part is a line that meets the wave at the endpoints.\n"),
97      "\n",
98      /* xgettext:no-c-format */ N_("All editing functions work non-destructively, that is, the file you're editing isn't actually changed until you save it (the effects also work this way).\n"),
99      "\n",
100      NULL };
101 
102 static const char * D05_contents[] = {
103      "\n",
104      /* xgettext:no-c-format */ N_("mhWaveEdit has a few simple effects, which are available from the 'Effects' menu. \n"),
105      "\n",
106      /* xgettext:no-c-format */ N_(" * Fade in/out\n"),
107      "\n",
108      /* xgettext:no-c-format */ N_("   This creates a linear fade in or fade out effect.\n"),
109      "\n",
110      /* xgettext:no-c-format */ N_(" * Normalize, Normalize to...\n"),
111      "\n",
112      /* xgettext:no-c-format */ N_("   This amplifies the sound as much as possible without getting clipping distortion. The \"Normalize to...\" item lets you specify which level to normalize to.\n"),
113      "\n",
114      /* xgettext:no-c-format */ N_(" * Volume adjust/fade...\n"),
115      "\n",
116      /* xgettext:no-c-format */ N_("   This effect lets you select a starting volume and a ending volume and amplifies the selection fading from the starting volume to the ending volume.\n"),
117      "\n",
118      /* xgettext:no-c-format */ N_("   Note that volumes above 100% may cause sound distortion. Use the 'Find top volume' to find out the maximum amplification possible without distortion. (You can use this for normalizing samples.) \n"),
119      "\n",
120      /* xgettext:no-c-format */ N_("   By setting starting volume and ending volume to the same value you get a simple amplification of the sound. \n"),
121      "\n",
122      /* xgettext:no-c-format */ N_(" * Convert samplerate...\n"),
123      "\n",
124      /* xgettext:no-c-format */ N_("   This converts the samplerate of the entire file to one you specify. There are different methods for doing this, usually the one in the top has the best quality but can take longer than the other methode.\n"),
125      "\n",
126      /* xgettext:no-c-format */ N_(" * Convert sample format...\n"),
127      "\n",
128      /* xgettext:no-c-format */ N_("   This converts the sample format of the entire file.\n"),
129      "\n",
130      /* xgettext:no-c-format */ N_("   The 'Don't actually change the data' option can be used if the program was wrong about the file's format.\n"),
131      "\n",
132      /* xgettext:no-c-format */ N_(" * Byte swap\n"),
133      "\n",
134      /* xgettext:no-c-format */ N_("   This \"byte swaps\" the selected part. It can be used to repair damaged files where the byte order is wrong. Note that if the sound looks alright but plays wrong, you should not use this option, instead you should use the \"byte-swap output\" option in the Preferences dialog.\n"),
135      "\n",
136      /* xgettext:no-c-format */ N_(" * Mix to mono\n"),
137      "\n",
138      /* xgettext:no-c-format */ N_("   This mixes all channels of the file together to a mono sound.\n"),
139      "\n",
140      /* xgettext:no-c-format */ N_(" * Add channel\n"),
141      "\n",
142      /* xgettext:no-c-format */ N_("   This copies the first channel to a new channel in the sound, converting mono to stereo etc.\n"),
143      "\n",
144      /* xgettext:no-c-format */ N_(" * Map channels...\n"),
145      /* xgettext:no-c-format */ N_("   \n"),
146      /* xgettext:no-c-format */ N_("   With this effect, you can change the number of channels in the file. You can also rearrange and add (i.e. mix) channels.\n"),
147      "\n",
148      /* xgettext:no-c-format */ N_(" * Combine channels...\n"),
149      "\n",
150      /* xgettext:no-c-format */ N_("   This effect lets you create a new sound by a linear combination of the old channels. This means you can do channel mixing / swapping / balance / panning / amplification etc. by entering different values. For example, to swap the left and right channel, you select that the new Channel 1 should be 0% of the old Channel 1 and 100% of the old Channel 2, and the new Channel 2 should be 100% of the old Channel 1 and 0% of the old Channel 2 \n"),
151      "\n",
152      /* xgettext:no-c-format */ N_(" * Speed adjustment...\n"),
153      "\n",
154      /* xgettext:no-c-format */ N_("   This effect changes the speed of the selection. The tone will change as well.\n"),
155      /* xgettext:no-c-format */ N_(" * Pipe through program...\n"),
156      /* xgettext:no-c-format */ N_(" \n"),
157      /* xgettext:no-c-format */ N_("   This effect is for advanced users wanting to pipe raw audio data through an external program. The output of the program is read back and replaces the processed part. \n"),
158      "\n",
159      /* xgettext:no-c-format */ N_("mhWaveEdit supports LADSPA effects and can also make use of most of the SoX utility's effects. To find the LADSPA plugins the environment variable LADSPA_PATH must be properly set up. \n"),
160      "\n",
161      /* xgettext:no-c-format */ N_("All supported effects can be found by choosing the 'Effects...' menu item. The effects are listed with names beginning with [B] for builtin effects, [L] for LADSPA effects, and [S] for SoX effects.\n"),
162      "\n",
163      NULL };
164 
165 static const char * D06_contents[] = {
166      "\n",
167      /* xgettext:no-c-format */ N_("Some notes on sound quality.\n"),
168      "\n",
169      /* xgettext:no-c-format */ N_("The general rule when doing audio editing/processing is to not manipulate the data more than necessary and keep an original copy whenever you're processing your important files. \n"),
170      "\n",
171      /* xgettext:no-c-format */ N_("Cut, copy and paste operations move the data around without modifying it, so these don't degrade the sound quality. Because of level differences, you may get a \"step\" at the start and end of the inserted part, which can cause a small clicking sound. \n"),
172      "\n",
173      /* xgettext:no-c-format */ N_("The mix paste function doesn't decrease quality, unless the peaks become too high and you get clipping. In that case you will get a warning message.\n"),
174      "\n",
175      /* xgettext:no-c-format */ N_("Sound data is normally stored as integer values. Therefore, whenever you normalize, adjust volume, decrease sample size or filter a sound, the result must be rounded. If you use 24 or 32 bit sample sizes, this is not really a problem, but if you use 8 or 16 bits sample size, this rounding causes a decrease in quality. \n"),
176      "\n",
177      /* xgettext:no-c-format */ N_("The quality decrease that the rounding causes can be masked by adding a small amount of noise before rounding. This is called \"dithering\". mhWaveEdit supports basic dithering and it's enabled by default.\n"),
178      "\n",
179      /* xgettext:no-c-format */ N_("By default, mhWaveEdit uses floating-point temporary files for storing processed results to avoid rounding until the file is saved.\n"),
180      NULL };
181 
182 static const char * D07_contents[] = {
183      "\n",
184      /* xgettext:no-c-format */ N_("Even if mhWaveEdit was originally built for editing wav files, it's also possible to load and save in a few other formats. mhWaveEdit always supports wav and raw files, but if it's compiled with the libsndfile library, mhWaveEdit supports a couple of other formats as well. \n"),
185      "\n",
186      /* xgettext:no-c-format */ N_("To save a file with a different file format, use \"Save as...\" and choose a format in the file type selection box. \n"),
187      "\n",
188      /* xgettext:no-c-format */ N_("mhWaveEdit has basic support for mp3 and ogg formats. For this to work you need to have LAME installed for mp3 support, and OggDec/OggEnc for Ogg support. If you have these programs, you can open and save mp3/ogg files just like any other file format.\n"),
189      "\n",
190      /* xgettext:no-c-format */ N_("If mplayer is installed, mhwaveedit can open all formats that it supports, for example the soundtrack of a video file. Since mplayer is only a player, these files can not be saved back after editing, you have to save the file into a supported format.\n"),
191      NULL };
192 
193 static const char * D08_contents[] = {
194      "\n",
195      /* xgettext:no-c-format */ N_("mhWaveEdit creates a directory ~/.mhwaveedit where it stores configuration information. \n"),
196      "\n",
197      /* xgettext:no-c-format */ N_("The configuration file is called config. It can be hand edited, but the easiest way is through 'Preferences' on the Edit menu.\n"),
198      "\n",
199      /* xgettext:no-c-format */ N_("Each mhwaveedit process creates a session file in the .mhwaveedit directory called mhwaveedit-session-<pid>-<session>-<state>, where <session> is the session ID number and <state> is a character code showing the state of the session ('r' for running sessions). \n"),
200      "\n",
201      /* xgettext:no-c-format */ N_("Temporary files are by default also stored in the ~/.mhwaveedit directory. Which directories to use can be set through the preferences dialog. To get the best performance, you should have one temporary directory for each local filesystem. The temporary files have names of the form \"mhwaveedit-temp-<pid>-nnnn-<session>\". Do NOT open or remove temporary files with the same pid number as a currently running mhWaveEdit.\n"),
202      "\n",
203      /* xgettext:no-c-format */ N_("mhWaveEdit checks on startup for leftover temporary files and lets the user open them. After opening a crashed session, the files can be saved or thrown away.\n"),
204      NULL };
205 
206 static const char * D09_contents[] = {
207      "\n",
208      /* xgettext:no-c-format */ N_("F1            Help\n"),
209      /* xgettext:no-c-format */ N_("F12           Record\n"),
210      "\n",
211      /* xgettext:no-c-format */ N_("Ctrl+(number) Set mark\n"),
212      /* xgettext:no-c-format */ N_("(number)      Goto mark\n"),
213      "\n",
214      /* xgettext:no-c-format */ N_("Ctrl+P        Preferences\n"),
215      /* xgettext:no-c-format */ N_("Ctrl+E        Effects\n"),
216      "\n",
217      /* xgettext:no-c-format */ N_("Ctrl+O        Open file\n"),
218      /* xgettext:no-c-format */ N_("Ctrl+S        Save file\n"),
219      /* xgettext:no-c-format */ N_("Ctrl+U        Save selection as\n"),
220      "\n",
221      /* xgettext:no-c-format */ N_("Ctrl+C        Copy\n"),
222      /* xgettext:no-c-format */ N_("Ctrl+X        Cut\n"),
223      /* xgettext:no-c-format */ N_("Ctrl+D        Delete\n"),
224      /* xgettext:no-c-format */ N_("Delete        Delete\n"),
225      /* xgettext:no-c-format */ N_("Ctrl+V        Paste\n"),
226      /* xgettext:no-c-format */ N_("Ctrl+Z        Undo\n"),
227      /* xgettext:no-c-format */ N_("Ctrl+A        Select all\n"),
228      "\n",
229      /* xgettext:no-c-format */ N_("Ctrl+G        Position cursor (Go to)\n"),
230      /* xgettext:no-c-format */ N_("Ctrl+H        Position cursor at file start\n"),
231      /* xgettext:no-c-format */ N_("Ctrl+J        Position cursor at file end\n"),
232      /* xgettext:no-c-format */ N_("Ctrl+K        Position cursor at selection start\n"),
233      /* xgettext:no-c-format */ N_("Ctrl+L        Position cursor at selection end\n"),
234      /* xgettext:no-c-format */ N_("Y,U           Move cursor to nearest all-channel zero-crossing\n"),
235      /* xgettext:no-c-format */ N_("I,O           Move cursor to nearest any-channel zero-crossing\n"),
236      "\n",
237      /* xgettext:no-c-format */ N_("Ctrl+Q        Selection start at cursor\n"),
238      /* xgettext:no-c-format */ N_("Ctrl+W        Selection end at cursor\n"),
239      "\n",
240      /* xgettext:no-c-format */ N_("+,=           Zoom in\n"),
241      /* xgettext:no-c-format */ N_("-             Zoom out\n"),
242      /* xgettext:no-c-format */ N_(">             Zoom to selection\n"),
243      /* xgettext:no-c-format */ N_("<             Zoom all\n"),
244      /* xgettext:no-c-format */ N_("Arrow keys    Scroll left/right\n"),
245      "\n",
246      /* xgettext:no-c-format */ N_("Home          Move view to file start\n"),
247      /* xgettext:no-c-format */ N_("End           Move view to file end\n"),
248      /* xgettext:no-c-format */ N_("Tab           Move view to cursor\n"),
249      /* xgettext:no-c-format */ N_("Ctrl+Tab      Move cursor to center of view\n"),
250      "\n",
251      /* xgettext:no-c-format */ N_("Space         Play/Stop\n"),
252      /* xgettext:no-c-format */ N_("Shift+Space   Play all\n"),
253      /* xgettext:no-c-format */ N_(",             Play from cursor pos\n"),
254      /* xgettext:no-c-format */ N_(".             Stop\n"),
255      /* xgettext:no-c-format */ N_("/             Play selection\n"),
256      /* xgettext:no-c-format */ N_("H,J           Move cursor (and playback) 1/8 of view\n"),
257      /* xgettext:no-c-format */ N_("K,L           Move cursor one sample\n"),
258      /* xgettext:no-c-format */ N_("Ctrl+arrow    Move cursor (and playback) half second\n"),
259      /* xgettext:no-c-format */ N_("(             Play first 3 seconds of selection\n"),
260      /* xgettext:no-c-format */ N_(")             Play last 3 seconds of selection\n"),
261      NULL };
262 
263 static const char * D10_contents[] = {
264      "\n",
265      /* xgettext:no-c-format */ N_("If you find a bug or flaw in the program that's not mentioned in the BUGS file, report the bug in the bug tracker (see contact info) or mail a bug report describing the bug to: magnus.hjorth@home.se\n"),
266      "\n",
267      /* xgettext:no-c-format */ N_("In case of a crash, please do not send me any core dumps. They are huge and completely useless to me. Instead, create a backtrace. Backtraces tell you exactly where the program crashed.\n"),
268      "\n",
269      /* xgettext:no-c-format */ N_("How to create a backtrace:\n"),
270      /* xgettext:no-c-format */ N_("1. Enable core dumps: ulimit -c unlimited\n"),
271      /* xgettext:no-c-format */ N_("2. Run the program:   mhwaveedit\n"),
272      /* xgettext:no-c-format */ N_("3. Make the program crash. You should now get a file named core or core.1234 in the directory you're in.\n"),
273      /* xgettext:no-c-format */ N_("4. Run gdb with the program and core file: \n"),
274      /* xgettext:no-c-format */ N_("   gdb /usr/local/bin/mhwaveedit core | tee backtrace.txt\n"),
275      /* xgettext:no-c-format */ N_("5. After gdb has loaded, use the command: bt\n"),
276      /* xgettext:no-c-format */ N_("6. Quit gdb with the command: quit\n"),
277      /* xgettext:no-c-format */ N_("7. Now you should have a back trace in the file backtrace.txt\n"),
278      NULL };
279 
280 static const char * D11_contents[] = {
281      "\n",
282      /* xgettext:no-c-format */ N_("There are plenty of things you can do if you want to help the development of mhWaveEdit. \n"),
283      "\n",
284      /* xgettext:no-c-format */ N_("First of all, look for bugs and report all bugs you find into the bug tracker or through e-mail. Sometimes a bug can get overlooked for a long time because nobody reports it, so don't be afraid to report bugs that have been there for a few releases. You don't have to provide fixes or very detailed information, although it helps of course.\n"),
285      "\n",
286      /* xgettext:no-c-format */ N_("Feature requests are also welcome, report them to the mailing list or to the bug tracker.\n"),
287      "\n",
288      /* xgettext:no-c-format */ N_("If you speak a language other than English and mhWaveEdit isn't translated to your language, you can contribute a translation. To do that, copy the template mhwaveedit.pot in the po directory into a new file ll.po, where ll is your language code (see http://www.gnu.org/software/gettext/manual/html_node/gettext_221.html for a list of language codes). \n"),
289      "\n",
290      /* xgettext:no-c-format */ N_("It's possible to edit po-files by hand, but I recommend a program such as poEdit (http://www.poedit.org) for editing translations. \n"),
291      "\n",
292      /* xgettext:no-c-format */ N_("Note that for those translatable strings that look like \"RecordStatus|Paused\", you should ignore what's to the left and only translate the string to the right (\"Paused\" in this example). This convention is there to make it possible to translate the same string to different things depending on context. \n"),
293      "\n",
294      /* xgettext:no-c-format */ N_("After you've filled in all the translations you want (you don't have to translate all the strings), mail in the po file to me (see contact info) and I'll add it to the next release. \n"),
295      "\n",
296      /* xgettext:no-c-format */ N_("If a translation is incomplete, you're very welcome to translate the remaining untranslated messages and mail them in. Corrections to translations are also appreciated, but they may need to be checked with the previous translator before including them. \n"),
297      "\n",
298      NULL };
299 
300 static const char * D12_contents[] = {
301      "\n",
302      /* xgettext:no-c-format */ N_("For bug reports, translation updates, patches and PayPal donations:\n"),
303      /* xgettext:no-c-format */ N_("magnus.hjorth@home.se\n"),
304      "\n",
305      /* xgettext:no-c-format */ N_("Project page with bug tracker, mailing list membership:\n"),
306      /* xgettext:no-c-format */ N_("http://gna.org/projects/mhwaveedit\n"),
307      "\n",
308      /* xgettext:no-c-format */ N_("Mailing list (you must be a subscriber before you can post messages):\n"),
309      /* xgettext:no-c-format */ N_("mhwaveedit-discuss@gna.org\n"),
310      "\n",
311      NULL };
312 
313 const char ** help_page_contents[] = {
314      O00_contents ,
315      D01_contents ,
316      D02_contents ,
317      D03_contents ,
318      D04_contents ,
319      D05_contents ,
320      D06_contents ,
321      D07_contents ,
322      D08_contents ,
323      D09_contents ,
324      D10_contents ,
325      D11_contents ,
326      D12_contents ,
327      NULL };
328