Thread Perl-Modul mit dazugehörigen, dynamisch gelesenen Dateien (10 answers)
Opened by defun at 2008-07-18 01:22

Struppi
 2008-07-18 02:50
#112287 #112287
User since
2006-02-17
628 Artikel
BenutzerIn
[Homepage]
user image
Es gibt mehrere Möglichkeiten das es eleganter zu lösen.

Es gibt Module wie z.b http://search.cpan.org/~jbriggs/Gettext-0.01/Gette...
Oder du machst sowas selbst, z.b. so:
Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
package Msg;

$msg = {
ERROR => 'Fehler',
WRONG_PARAMETER => 'Falscher Parameter: %s',
CANT_START => 'Anwendung kann nicht gestartet werden, %s',
LOADING_ERROR => 'Fehler beim laden von "%s" weil: %s',
NO_OBJECT => '%s ist kein Objekt',              
NO_HASH_REF     => 'falscher Parameter, keine HASH Referenz (%s)',
# ....
};

1;

Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
package Msg;
use strict;
our $msg = {};
sub MSG
{
        my $id = shift;
        return sprintf $msg->{$id}, @_, '', '', '' if $msg->{$id};
        return "[UNKNOWN MSG] *@_*";
};

sub import {
        my $modul = (shift) . '::' . (shift || 'de');
        eval "use $modul";
        eval 'use Msg::de'  if $@;
        *main::MSG = \&MSG;
}
1;


Code (perl): (dl )
1
2
3
4
5
6
#!/usr/bin/perl -w
use strict;

use Msg('en');
print MSG('WRONG_PARAMETER', 'x');
print MSG('LOADING_ERROR', 'file.txt', $!);


Den Pfad brauchst du in dem Fall nicht.

Aber Systemfehlermeldungen sollte man sich überlegen zu übersetzen. Es kann von Vorteil sein, diese auf Englisch zu halten, weil Programmierer i.d.R. Englisch können und es ist einfacher eine Lösung für ein Problem zu finden, wenn auch z.b. englischsprache Internetseiten gefunden werden.

View full thread Perl-Modul mit dazugehörigen, dynamisch gelesenen Dateien