Date: 08/27/01
- Next message: pbabilotte <email protected>: "[PHP-DEV] Bug #12975: Unable to load dynamic library 'd:\applications\php\extensions\php_oci8.dll' -"
- Previous message: teo <email protected>: "Re: [PHP-DEV] A couple of session issues"
- Next in thread: Chuck Hagenbuch: "Re: [PHP-DEV] [PATCH] ext/gettext adding *ngettext functions"
- Reply: Chuck Hagenbuch: "Re: [PHP-DEV] [PATCH] ext/gettext adding *ngettext functions"
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
Hi all,
I have added to ext/gettext the wrapper needed to support *ngettext
functions, you can find the patch below.
Ciao
-- Walter Franzini, e-mail: walter <email protected> SysNet, Via Digione 8, 27100 Pavia - Italydiff -aur php-4.0.6.ORIG/ext/gettext/gettext.c php-4.0.6+gettext-patch/ext/gettext/gettext.c --- php-4.0.6.ORIG/ext/gettext/gettext.c Thu May 24 14:41:51 2001 +++ php-4.0.6+gettext-patch/ext/gettext/gettext.c Sun Aug 26 18:13:42 2001 @@ -38,6 +38,9 @@ PHP_FE(dgettext, NULL) PHP_FE(dcgettext, NULL) PHP_FE(bindtextdomain, NULL) + PHP_FE(ngettext, NULL) + PHP_FE(dngettext, NULL) + PHP_FE(dcngettext, NULL) {NULL, NULL, NULL} }; @@ -165,6 +168,97 @@ RETURN_STRING(retval, 1); } /* }}} */ + +/* {{{ proto string ngettext(string MSGID1, string MSGID2, int N) + The `ngettext' function is similar to the `gettext' function as it finds the message catalogs in the same way. But it takes two extra arguments. The MSGID1 parameter must contain the singular form of the string to be converted. It is also used as the key for the search in the catalog. The MSGID2 parameter is the plural form. The parameter N is used to determine the plural form. If no message catalog is found MSGID1 is returned if `n == 1', otherwise `msgid2'. +*/ +PHP_FUNCTION (ngettext) +{ + pval **msgid1, **msgid2, **count; + char *msgstr; + + RETVAL_FALSE; + + if (3 != ZEND_NUM_ARGS () + || FAILURE == zend_get_parameters_ex (3, &msgid1, &msgid2, &count)) { + WRONG_PARAM_COUNT; + } else { + convert_to_string_ex (msgid1); + convert_to_string_ex (msgid2); + convert_to_long_ex (count); + + msgstr = ngettext ((*msgid1)->value.str.val, (*msgid2)->value.str.val, + (*count)->value.lval); + if (msgstr) { + RETVAL_STRING (msgstr, 1); + } + } +} +/* }}} */ + +/* {{{ proto string dngettext (string domain, string msgid1, string msgid2, + long count) + The `dngettext' is similar to the `dgettext' function in the way the message catalog is selected. The difference is that it takes two extra parameter to provide the correct plural form. These two parameters are handled in the same way `ngettext' handles them. + */ +PHP_FUNCTION(dngettext) +{ + pval **domain, **msgid1, **msgid2, **count; + + RETVAL_FALSE; + + if (4 != ZEND_NUM_ARGS () + || FAILURE == zend_get_parameters_ex (4, &domain, &msgid1, &msgid2, + &count)) { + WRONG_PARAM_COUNT; + } else { + char *msgstr; + + convert_to_string_ex (domain); + convert_to_string_ex (msgid1); + convert_to_string_ex (msgid2); + convert_to_long_ex (count); + + msgstr = dngettext ((*domain)->value.str.val, (*msgid1)->value.str.val, + (*msgid2)->value.str.val, (*count)->value.lval); + if (msgstr) { + RETVAL_STRING (msgstr, 1); + } + } +} +/* }}} */ + +/* {{{ proto string dcngettext (string domain, string msgid1, string msgid2, + long n, int category) + The `dcngettext' is similar to the `dcgettext' function in the way the message catalog is selected. The difference is that it takes two extra parameter to provide the correct plural form. These two parameters are handled in the same way `ngettext' handles them. +*/ +PHP_FUNCTION(dcngettext) +{ + pval **domain, **msgid1, **msgid2, **count, **category; + + RETVAL_FALSE; + + if (5 != ZEND_NUM_ARGS () + || FAILURE == zend_get_parameters_ex (4, &domain, &msgid1, &msgid2, + &count, &category)) { + + } else { + char* msgstr=NULL; + + convert_to_string_ex (domain); + convert_to_string_ex (msgid1); + convert_to_string_ex (msgid2); + convert_to_long_ex (count); + convert_to_long_ex (category); + + msgstr = dcngettext ((*domain)->value.str.val, (*msgid1)->value.str.val, + (*msgid2)->value.str.val, (*count)->value.lval, + (*category)->value.lval); + + if (msgstr) { + RETVAL_STRING (msgstr, 1); + } + } +} #endif /* HAVE_LIBINTL */ Only in php-4.0.6+gettext-patch/ext/gettext/: libs.mk diff -aur php-4.0.6.ORIG/ext/gettext/php_gettext.h php-4.0.6+gettext-patch/ext/gettext/php_gettext.h --- php-4.0.6.ORIG/ext/gettext/php_gettext.h Mon Feb 26 19:14:28 2001 +++ php-4.0.6+gettext-patch/ext/gettext/php_gettext.h Sun Aug 26 17:16:32 2001 @@ -36,6 +36,9 @@ PHP_FUNCTION(dgettext); PHP_FUNCTION(dcgettext); PHP_FUNCTION(bindtextdomain); +PHP_FUNCTION(ngettext); +PHP_FUNCTION(dngettext); +PHP_FUNCTION(dcngettext); #else #define gettext_module_ptr NULL Only in php-4.0.6+gettext-patch/ext/gettext/: tests
-- PHP Development Mailing List <http://www.php.net/> To unsubscribe, e-mail: php-dev-unsubscribe <email protected> For additional commands, e-mail: php-dev-help <email protected> To contact the list administrators, e-mail: php-list-admin <email protected>
- Next message: pbabilotte <email protected>: "[PHP-DEV] Bug #12975: Unable to load dynamic library 'd:\applications\php\extensions\php_oci8.dll' -"
- Previous message: teo <email protected>: "Re: [PHP-DEV] A couple of session issues"
- Next in thread: Chuck Hagenbuch: "Re: [PHP-DEV] [PATCH] ext/gettext adding *ngettext functions"
- Reply: Chuck Hagenbuch: "Re: [PHP-DEV] [PATCH] ext/gettext adding *ngettext functions"
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]

