|< 1 2 >| | 11 Einträge, 2 Seiten |
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;
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;
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', $!);
defun+2008-07-17 23:58:28--[edit:] Mit einem konfigurierbaren Verzeichnis meinst du ein Verzeichnis, das per Installationsroutine angelegt wird, oder?
defun+2008-07-18 18:03:23--Wie stellst du dir den die Zuordnung des textes zum Skript vor? Willst du eine Textdatei einlesen und parsen?Die Idee mit den eigenen Modulen je nach Sprache hatte ich auch schon, allerdings spricht folgendes dagegen:
- Ein möglicher Übersetzer müsste Perl-Code schreiben. Und selbst wenn dieser Übersetzer ich selbst wäre, würde mir das ein ungutes Gefühl geben, weil man bei Code schnell mal was falsch tippt. Bei einem simplen Text-Format ist das Risiko geringer.
defun+2008-07-18 18:03:23--Wieso? Ich hab doch extra in dem Code einen Fallback eingebaut.- Um herauszufinden, welche Sprachen vorhanden sind, muss ich doch wieder auf Datei-Operationen zurückgreifen.
1
2
3
de = /home/user/die_software/deutsch.txt
en = /home/user/die_software/english.txt
fr = /home/user/die_software/francais.txt
defun+2008-07-17 23:22:28--Konkret handelt es sich bei mir um das Modul "ErrorText", das (mehrsprachige) Fehlertexte für eine Reihe verwandter Module verwaltet.
Struppi+2008-07-18 19:37:06--Wie stellst du dir den die Zuordnung des textes zum Skript vor? Willst du eine Textdatei einlesen und parsen?
Struppi+2008-07-18 19:37:06--Das halte ich für bei Systemmeldungen für overkill und wer Systemmeldungen übersetzt sollte die Programmiersprache beherrschen. Für "normale" Texte verwende ich die Datenbank und im Zweifel würde ich gettetxt verwenden, ein bewährtes und weitverbreitetes System, wofür es Tools zum verarbeiten gibt.
Struppi+2008-07-18 19:37:06--defun+2008-07-18 18:03:23--Wieso? Ich hab doch extra in dem Code einen Fallback eingebaut.- Um herauszufinden, welche Sprachen vorhanden sind, muss ich doch wieder auf Datei-Operationen zurückgreifen.
Struppi+2008-07-18 19:37:06--[P.S.] Wie machst du es eigentlich in deinem system, wenn du Meldungen mit Zahlen ausgibst?
Da ist z.b. gettext unschlagbar und meine Variante mit sprintf nur teilweise sinnvoll.
|< 1 2 >| | 11 Einträge, 2 Seiten |