Skip to content

Commit 8a05b6a

Browse files
committed
Add initial strings files for localization (Issue #58)
1 parent 87c34a1 commit 8a05b6a

9 files changed

+1929
-56
lines changed

pappl/Makefile

+9
Original file line numberDiff line numberDiff line change
@@ -223,6 +223,15 @@ resheader: $(RESOURCES)
223223
./makeresheader.sh $(RESOURCES) >resource-private.h
224224

225225

226+
# Update localization strings...
227+
.PHONY: strings
228+
strings:
229+
echo Updating base.strings...
230+
echo "/* Command-line and web interface localizations */" >strings/base.strings
231+
grep _PAPPL_LOC *.c | sed -E -e '1,$$s/^.*_PAPPL_LOC\(("[^"]+").*$$/\1 = \1;/' >>strings/base.strings
232+
cat strings/ipp.strings >>strings/base.strings
233+
234+
226235
# Analyze code with the Clang static analyzer <https://clang-analyzer.llvm.org>
227236
clang:
228237
echo "clang $(CPPFLAGS) --analyze ..."

pappl/base-private.h

+1
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,7 @@ typedef cups_afree_func_t cups_afree_cb_t;
6666
# define _PAPPL_DEBUG(...)
6767
# endif // DEBUG
6868

69+
# define _PAPPL_LOC(s) s
6970
# define _PAPPL_LOOKUP_STRING(bit,strings) _papplLookupString(bit, sizeof(strings) / sizeof(strings[0]), strings)
7071
# define _PAPPL_LOOKUP_VALUE(keyword,strings) _papplLookupValue(keyword, sizeof(strings) / sizeof(strings[0]), strings)
7172

pappl/loc-private.h

+1
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,7 @@ struct _pappl_loc_s // Localization data
4343
extern int _papplLocCompare(pappl_loc_t *a, pappl_loc_t *b) _PAPPL_PRIVATE;
4444
extern pappl_loc_t *_papplLocCreate(pappl_system_t *system, _pappl_resource_t *r) _PAPPL_PRIVATE;
4545
extern void _papplLocDelete(pappl_loc_t *loc) _PAPPL_PRIVATE;
46+
extern void _papplLocPrintf(FILE *fp, const char *message, ...) _PAPPL_FORMAT(3,4) _PAPPL_PRIVATE;
4647

4748

4849
# ifdef __cplusplus

pappl/mainloop.c

+53-53
Original file line numberDiff line numberDiff line change
@@ -152,20 +152,20 @@ papplMainloop(
152152

153153
if (i >= argc)
154154
{
155-
fprintf(stderr, "%s: Missing filename after '--'.\n", base_name);
155+
_papplLocPrintf(stderr, _PAPPL_LOC("%s: Missing filename after '--'."), base_name);
156156
return (1);
157157
}
158158
else if (num_files >= (int)(sizeof(files) / sizeof(files[0])))
159159
{
160-
fprintf(stderr, "%s: Too many files.\n", base_name);
160+
_papplLocPrintf(stderr, _PAPPL_LOC("%s: Too many files."), base_name);
161161
return (1);
162162
}
163163

164164
files[num_files ++] = argv[i];
165165
}
166166
else if (!strncmp(argv[i], "--", 2))
167167
{
168-
fprintf(stderr, "%s: Unknown option '%s'.\n", base_name, argv[i]);
168+
_papplLocPrintf(stderr, _PAPPL_LOC("%s: Unknown option '%s'."), base_name, argv[i]);
169169
return (1);
170170
}
171171
else if (argv[i][0] == '-' && argv[i][1])
@@ -182,7 +182,7 @@ papplMainloop(
182182
i ++;
183183
if (i >= argc)
184184
{
185-
fprintf(stderr, "%s: Missing printer name after '-d'.\n", base_name);
185+
_papplLocPrintf(stderr, _PAPPL_LOC("%s: Missing printer name after '-d'."), base_name);
186186
return (1);
187187
}
188188

@@ -193,7 +193,7 @@ papplMainloop(
193193
i ++;
194194
if (i >= argc)
195195
{
196-
fprintf(stderr, "%s: Missing hostname after '-h'.\n", base_name);
196+
_papplLocPrintf(stderr, _PAPPL_LOC("%s: Missing hostname after '-h'."), base_name);
197197
return (1);
198198
}
199199

@@ -204,7 +204,7 @@ papplMainloop(
204204
i ++;
205205
if (i >= argc)
206206
{
207-
fprintf(stderr, "%s: Missing job ID after '-j'.\n", base_name);
207+
_papplLocPrintf(stderr, _PAPPL_LOC("%s: Missing job ID after '-j'."), base_name);
208208
return (1);
209209
}
210210

@@ -215,7 +215,7 @@ papplMainloop(
215215
i ++;
216216
if (i >= argc)
217217
{
218-
fprintf(stderr, "%s: Missing driver name after '-m'.\n", base_name);
218+
_papplLocPrintf(stderr, _PAPPL_LOC("%s: Missing driver name after '-m'."), base_name);
219219
return (1);
220220
}
221221

@@ -226,7 +226,7 @@ papplMainloop(
226226
i ++;
227227
if (i >= argc)
228228
{
229-
fprintf(stderr, "%s: Missing copy count after '-n'.\n", base_name);
229+
_papplLocPrintf(stderr, _PAPPL_LOC("%s: Missing copy count after '-n'."), base_name);
230230
return (1);
231231
}
232232

@@ -236,14 +236,14 @@ papplMainloop(
236236
case 'o': // -o "NAME=VALUE [... NAME=VALUE]"
237237
if (opt[1] && strchr(opt, '='))
238238
{
239-
fprintf(stderr, "%s: Missing space after '-o'.\n", base_name);
239+
_papplLocPrintf(stderr, _PAPPL_LOC("%s: Missing space after '-o'."), base_name);
240240
return (1);
241241
}
242242

243243
i ++;
244244
if (i >= argc)
245245
{
246-
fprintf(stderr, "%s: Missing option(s) after '-o'.\n", base_name);
246+
_papplLocPrintf(stderr, _PAPPL_LOC("%s: Missing option(s) after '-o'."), base_name);
247247
return (1);
248248
}
249249

@@ -254,7 +254,7 @@ papplMainloop(
254254
i ++;
255255
if (i >= argc)
256256
{
257-
fprintf(stderr, "%s: Missing title after '-t'.\n", base_name);
257+
_papplLocPrintf(stderr, _PAPPL_LOC("%s: Missing title after '-t'."), base_name);
258258
return (1);
259259
}
260260

@@ -265,7 +265,7 @@ papplMainloop(
265265
i ++;
266266
if (i >= argc)
267267
{
268-
fprintf(stderr, "%s: Missing printer URI after '-u'.\n", base_name);
268+
_papplLocPrintf(stderr, _PAPPL_LOC("%s: Missing printer URI after '-u'."), base_name);
269269
return (1);
270270
}
271271

@@ -276,15 +276,15 @@ papplMainloop(
276276
i ++;
277277
if (i >= argc)
278278
{
279-
fprintf(stderr, "%s: Missing device URI after '-v'.\n", base_name);
279+
_papplLocPrintf(stderr, _PAPPL_LOC("%s: Missing device URI after '-v'."), base_name);
280280
return (1);
281281
}
282282

283283
num_options = cupsAddOption("smi2699-device-uri", argv[i], num_options, &options);
284284
break;
285285

286286
default:
287-
fprintf(stderr, "%s: Unknown option '-%c'.\n", base_name, *opt);
287+
_papplLocPrintf(stderr, _PAPPL_LOC("%s: Unknown option '-%c'."), base_name, *opt);
288288
return (1);
289289
}
290290
}
@@ -307,7 +307,7 @@ papplMainloop(
307307
{
308308
if (subcommand)
309309
{
310-
fprintf(stderr, "%s: Cannot specify more than one sub-command.\n", base_name);
310+
_papplLocPrintf(stderr, _PAPPL_LOC("%s: Cannot specify more than one sub-command."), base_name);
311311
return (1);
312312
}
313313

@@ -324,15 +324,15 @@ papplMainloop(
324324
// Extension sub-command...
325325
if (subcommand)
326326
{
327-
fprintf(stderr, "%s: Cannot specify more than one sub-command.\n", base_name);
327+
_papplLocPrintf(stderr, _PAPPL_LOC("%s: Cannot specify more than one sub-command."), base_name);
328328
return (1);
329329
}
330330

331331
subcommand = argv[i];
332332
}
333333
else if (access(argv[i], R_OK))
334334
{
335-
fprintf(stderr, "%s: Unable to access '%s': %s\n", base_name, argv[i], strerror(errno));
335+
_papplLocPrintf(stderr, _PAPPL_LOC("%s: Unable to access '%s': %s"), base_name, argv[i], strerror(errno));
336336
return (1);
337337
}
338338
else if (num_files < (int)(sizeof(files) / sizeof(files[0])))
@@ -343,7 +343,7 @@ papplMainloop(
343343
else
344344
{
345345
// Too many files...
346-
fprintf(stderr, "%s: Too many files.\n", base_name);
346+
_papplLocPrintf(stderr, _PAPPL_LOC("%s: Too many files."), base_name);
347347
return (1);
348348
}
349349
}
@@ -361,7 +361,7 @@ papplMainloop(
361361
}
362362
else if (num_files > 0)
363363
{
364-
fprintf(stderr, "%s: Sub-command '%s' does not accept files.\n", base_name, subcommand);
364+
_papplLocPrintf(stderr, _PAPPL_LOC("%s: Sub-command '%s' does not accept files."), base_name, subcommand);
365365
return (1);
366366
}
367367
else if (!strcmp(subcommand, "add"))
@@ -376,7 +376,7 @@ papplMainloop(
376376
}
377377
else
378378
{
379-
fprintf(stderr, "%s: Sub-command 'autoadd' is not supported.\n", base_name);
379+
_papplLocPrintf(stderr, _PAPPL_LOC("%s: Sub-command 'autoadd' is not supported."), base_name);
380380
return (1);
381381
}
382382
}
@@ -439,7 +439,7 @@ papplMainloop(
439439
else
440440
{
441441
// This should never happen...
442-
fprintf(stderr, "%s: Unknown sub-command '%s'.\n", base_name, subcommand);
442+
_papplLocPrintf(stderr, _PAPPL_LOC("%s: Unknown sub-command '%s'."), base_name, subcommand);
443443
return (1);
444444
}
445445
}
@@ -453,37 +453,37 @@ static void
453453
usage(const char *base_name, // I - Base name of application
454454
bool with_autoadd) // I - `true` if autoadd command is supported
455455
{
456-
printf("Usage: %s SUB-COMMAND [OPTIONS] [FILENAME]\n", base_name);
457-
printf(" %s [OPTIONS] [FILENAME]\n", base_name);
458-
printf(" %s [OPTIONS] -\n", base_name);
459-
puts("");
460-
puts("Sub-commands:");
461-
puts(" add PRINTER Add a printer.");
456+
_papplLocPrintf(stdout, _PAPPL_LOC("Usage: %s SUB-COMMAND [OPTIONS] [FILENAME]\n"
457+
" %s [OPTIONS] [FILENAME]\n"
458+
" %s [OPTIONS] -"), base_name, base_name, base_name);
459+
_papplLocPrintf(stdout, "");
460+
_papplLocPrintf(stdout, _PAPPL_LOC("Sub-commands:"));
461+
_papplLocPrintf(stdout, _PAPPL_LOC(" add PRINTER Add a printer."));
462462
if (with_autoadd)
463-
puts(" autoadd Automatically add supported printers.");
464-
puts(" cancel Cancel one or more jobs.");
465-
puts(" default Set the default printer.");
466-
puts(" delete Delete a printer.");
467-
puts(" devices List devices.");
468-
puts(" drivers List drivers.");
469-
puts(" jobs List jobs.");
470-
puts(" modify Modify a printer.");
471-
puts(" options List printer options.");
472-
puts(" pause Pause printing for a printer.");
473-
puts(" printers List printers.");
474-
puts(" resume Resume printing for a printer.");
475-
puts(" server Run a server.");
476-
puts(" shutdown Shutdown a running server.");
477-
puts(" status Show server/printer/job status.");
478-
puts(" submit Submit a file for printing.");
479-
puts("");
480-
puts("Options:");
481-
puts(" -a Cancel all jobs (cancel).");
482-
puts(" -d PRINTER Specify printer.");
483-
puts(" -j JOB-ID Specify job ID (cancel).");
484-
puts(" -m DRIVER-NAME Specify driver (add/modify).");
485-
puts(" -n COPIES Specify number of copies (submit).");
486-
puts(" -o NAME=VALUE Specify option (add,modify,server,submit).");
487-
puts(" -u URI Specify ipp: or ipps: printer/server.");
488-
puts(" -v DEVICE-URI Specify socket: or usb: device (add/modify).");
463+
_papplLocPrintf(stdout, _PAPPL_LOC(" autoadd Automatically add supported printers."));
464+
_papplLocPrintf(stdout, _PAPPL_LOC(" cancel Cancel one or more jobs."));
465+
_papplLocPrintf(stdout, _PAPPL_LOC(" default Set the default printer."));
466+
_papplLocPrintf(stdout, _PAPPL_LOC(" delete Delete a printer."));
467+
_papplLocPrintf(stdout, _PAPPL_LOC(" devices List devices."));
468+
_papplLocPrintf(stdout, _PAPPL_LOC(" drivers List drivers."));
469+
_papplLocPrintf(stdout, _PAPPL_LOC(" jobs List jobs."));
470+
_papplLocPrintf(stdout, _PAPPL_LOC(" modify Modify a printer."));
471+
_papplLocPrintf(stdout, _PAPPL_LOC(" options List printer options."));
472+
_papplLocPrintf(stdout, _PAPPL_LOC(" pause Pause printing for a printer."));
473+
_papplLocPrintf(stdout, _PAPPL_LOC(" printers List printers."));
474+
_papplLocPrintf(stdout, _PAPPL_LOC(" resume Resume printing for a printer."));
475+
_papplLocPrintf(stdout, _PAPPL_LOC(" server Run a server."));
476+
_papplLocPrintf(stdout, _PAPPL_LOC(" shutdown Shutdown a running server."));
477+
_papplLocPrintf(stdout, _PAPPL_LOC(" status Show server/printer/job status."));
478+
_papplLocPrintf(stdout, _PAPPL_LOC(" submit Submit a file for printing."));
479+
_papplLocPrintf(stdout, "");
480+
_papplLocPrintf(stdout, _PAPPL_LOC("Options:"));
481+
_papplLocPrintf(stdout, _PAPPL_LOC(" -a Cancel all jobs (cancel)."));
482+
_papplLocPrintf(stdout, _PAPPL_LOC(" -d PRINTER Specify printer."));
483+
_papplLocPrintf(stdout, _PAPPL_LOC(" -j JOB-ID Specify job ID (cancel)."));
484+
_papplLocPrintf(stdout, _PAPPL_LOC(" -m DRIVER-NAME Specify driver (add/modify)."));
485+
_papplLocPrintf(stdout, _PAPPL_LOC(" -n COPIES Specify number of copies (submit)."));
486+
_papplLocPrintf(stdout, _PAPPL_LOC(" -o NAME=VALUE Specify option (add,modify,server,submit)."));
487+
_papplLocPrintf(stdout, _PAPPL_LOC(" -u URI Specify ipp: or ipps: printer/server."));
488+
_papplLocPrintf(stdout, _PAPPL_LOC(" -v DEVICE-URI Specify socket: or usb: device (add/modify)."));
489489
}

pappl/printer-support.c

+3-1
Original file line numberDiff line numberDiff line change
@@ -144,7 +144,9 @@ static const char * const pappl_preasons[] =
144144
"offline",
145145
"spool-area-full",
146146
"toner-empty",
147-
"toner-low"
147+
"toner-low",
148+
"door-open",
149+
"identify-printer-requested"
148150
};
149151

150152
static const char * const pappl_raster_types[] =

pappl/printer.h

+4-2
Original file line numberDiff line numberDiff line change
@@ -142,8 +142,10 @@ enum pappl_preason_e // IPP "printer-state-reasons" bit values
142142
PAPPL_PREASON_SPOOL_AREA_FULL = 0x1000, // 'spool-area-full'
143143
PAPPL_PREASON_TONER_EMPTY = 0x2000, // 'toner-empty'
144144
PAPPL_PREASON_TONER_LOW = 0x4000, // 'toner-low'
145-
146-
PAPPL_PREASON_DEVICE_STATUS = 0x6fff // Supported @link papplDeviceGetStatus@ bits
145+
PAPPL_PREASON_DOOR_OPEN = 0x8000, // 'door-open'
146+
PAPPL_PREASON_IDENTIFY_PRINTER_REQUESTED = 0x10000,
147+
// 'identify-printer-requested'
148+
PAPPL_PREASON_DEVICE_STATUS = 0xefff // Supported @link papplDeviceGetStatus@ bits
147149
};
148150

149151
enum pappl_raster_type_e // IPP "pwg-raster-document-type-supported" bit values

0 commit comments

Comments
 (0)