anmerkung functions.i18n.php

Gesperrt
emergence
Beiträge: 10653
Registriert: Mo 28. Jul 2003, 12:49
Wohnort: Austria
Kontaktdaten:

anmerkung functions.i18n.php

Beitrag von emergence »

function i18nEmulateGettext
gibts

Code: Alles auswählen

	preg_match("/msgid.*\"".preg_quote($string,"/")."\".*\nmsgstr(\s*)\"(.*)\"/", $transFile[$domain], $results);
der results array sieht etwas seltsam aus...

sollte meiner meinung nach

Code: Alles auswählen

	preg_match("/msgid.*\"(".preg_quote($string,"/").")\"(?:\s*)?\nmsgstr(?:\s*)\"(.*)\"/", $transFile[$domain], $results);
sein...

ist im dem sinne nicht wirklich ein bug...

ne andere sache weshalb mir das aufgefallen ist

in send_reminder.php gibts ne passage mit

Code: Alles auswählen

i18n("Hello %s,\n\nyou've got a new reminder for the client '%s' at\n%s:\n\n%s");
dafür gibts eigentlich auch ne übersetzung in der po datei

und die sieht so aus

Code: Alles auswählen

#: contenido/cronjobs/send_reminder.php:85
#, php-format
msgid ""
"Hello %s,\n"
"\n"
"you've got a new reminder for the client '%s' at\n"
"%s:\n"
"\n"
"%s"
msgstr ""
"Hallo %s,\n"
"\n"
"du hast eine Wiedervorlage erhalten für den Mandanten '%s' at\n"
"%s:\n"
"\n"
"%s"
irgendwie klappt das bei mir nicht...
muss man sich ansehen...
*** make your own tools (wishlist :: thx)
emergence
Beiträge: 10653
Registriert: Mo 28. Jul 2003, 12:49
Wohnort: Austria
Kontaktdaten:

Beitrag von emergence »

ich hab die funktion nun etwas modifziert, sieht ziemlich seltsam aus, aber zumindestens klappt das jetzt...
die komplizierte sache daran war eigentlich das umwandeln der steuerzeichen..

Code: Alles auswählen

function i18nEmulateGettext ($string, $domain = "contenido")
{
	global $cfg, $i18nLanguage, $transFile, $i18nDomains, $_i18nTranslationCache;

	if (!is_array($_i18nTranslationCache))
	{
		$_i18nTranslationCache = array();
	}
	if (array_key_exists($string, $_i18nTranslationCache))
	{
		return $_i18nTranslationCache[$string];
	}

	/* Bad thing, gettext is not available. Let's emulate it */
	if (!file_exists($i18nDomains[$domain].$i18nLanguage."/LC_MESSAGES/".$domain.".po"))
	{
		return $string;
	}

	if (!isset($transFile[$domain]))
	{
		$transFile[$domain] = implode('',file($i18nDomains[$domain].$i18nLanguage."/LC_MESSAGES/".$domain.".po"));

        // remove comments from file
		$transFile[$domain] = preg_replace('/^#.+/m', '', $transFile[$domain]);

		// prepare for special po edit format
        /*

        something like:

        #, php-format
        msgid ""
        "Hello %s,\n"
        "\n"
        "you've got a new reminder for the client '%s' at\n"
        "%s:\n"
        "\n"
        "%s"
        msgstr ""
        "Hallo %s,\n"
        "\n"
        "du hast eine Wiedervorlage erhalten für den Mandanten '%s' at\n"
        "%s:\n"
        "\n"
        "%s"

        must be converted to

        msgid "Hello %s,\n\nyou've got a new reminder for the client '%s' at\n%s:\n\n%s"
        msgstr "Hallo %s,\n\ndu hast eine Wiedervorlage erhalten für den Mandanten '%s' at\n%s:\n\n%s"

        */
        $transFile[$domain] = preg_replace('/\\\n"\\s+"/m', '\\\\n', $transFile[$domain]);
        $transFile[$domain] = preg_replace('/(""\\s+")/m', '"', $transFile[$domain]);

	}

	$stringStart = strpos($transFile[$domain],'"'.str_replace(Array("\n", "\r", "\t"), Array('\n', '\r', '\t'), $string).'"');

	if ($stringStart === false)
	{
		return $string;
	}

	$results = array();
	preg_match("/msgid.*\"(".preg_quote(str_replace(Array("\n", "\r", "\t"), Array('\n', '\r', '\t'), $string),"/").")\"(?:\s*)?\nmsgstr(?:\s*)\"(.*)\"/", $transFile[$domain], $results);

	if (array_key_exists(1, $results))
	{
		$_i18nTranslationCache[$string] = stripslashes(str_replace(Array('\n', '\r', '\t'), Array("\n", "\r", "\t"), $results[2]));

		return $_i18nTranslationCache[$string];
	} else {
		return $string;
	}
}
vielleicht kanns ja einer testen...
*** make your own tools (wishlist :: thx)
HerrB
Beiträge: 6935
Registriert: Do 22. Mai 2003, 12:44
Wohnort: Berlin
Kontaktdaten:

Beitrag von HerrB »

Checkin, konnte noch keine Probleme feststellen.

Gruß
HerrB
Bitte keine unaufgeforderten PMs oder E-Mails -> use da Forum!

Newsletter: V4.4.x | V4.6.0-15 (Module, Backend) | V4.6.22+
Standardartikelliste: V4.4.x | V4.6.x
http://www.contenido.org/forum/search.php | http://faq.contenido.org | http://www.communido.net
Gesperrt