Re: [PATCH] i18n: Not add stripped contents for translation

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



在 2012年3月6日 下午12:16,Jiang Xin <worldhello.net@xxxxxxxxx> 写道:
>
> /*
>  * Make list of items easy for l10n translation.
>  *
>  *   1. Input list of items one by one through the 2nd argument,
>  *      but leave the 1st argument as NULL.
>  *
>  *   2. Append the output joint string to strbuf from the 1st argument.
>  *
>  * According to the number of items input. The joint string maybe:
>  *
>  *   a
>  *   a and b
>  *   a, b and c
>  *   a, b, c and d
>  *
>  */

-#define MAX_L10N_LIST_ITEMS_COUNT  128
+#define MAX_L10N_LIST_ITEMS_COUNT      8

> void append_l10n_list_items(struct strbuf *ret, const char *item)
> {
>    static const char **itemlist = NULL;
>    static int  count = 0;
>    int i = 0;
>
>    if (itemlist == NULL)
>        itemlist = xmalloc(MAX_L10N_LIST_ITEMS_COUNT * sizeof(char*));

+    else if (count >= MAX_L10N_LIST_ITEMS_COUNT)
+        itemlist = xrealloc(itemlist, (count +
MAX_L10N_LIST_ITEMS_COUNT) * sizeof(char*));

-    if(item != NULL && count < MAX_L10N_LIST_ITEMS_COUNT )
+    if (item != NULL)

>        itemlist[count++] = item;
>
>    if (ret != NULL) {
>        if (count == 1) {
>            strbuf_addstr(ret, itemlist[0]);
>        }
>        else if (count == 2) {
>            strbuf_addf(ret, _("%s and %s"), itemlist[0], itemlist[1]);
>        }
>        else if (count > 2) {
>            strbuf_addf(ret, _("%s, "), itemlist[0]);
>            for (i=1; i<count-2; i++) {

-                 strbuf_addstr(ret, itemlist[i]);
-                 strbuf_addstr(ret, _(", "));
+                 strbuf_addf(ret, _("%s, %s"), itemlist[i], "");

>            }
>            strbuf_addf(ret, _("%s and %s"), itemlist[count-2],
> itemlist[count-1]);
>        }
>        free(itemlist);
>        itemlist = NULL;
>        count = 0;
>    }
> }
>
>
> ...
>       strbuf_addstr(&extra, " ("))
>       if (a)
>               append_l10n_list_items(NULL, _("msg a"));
>       if (b)
>               append_l10n_list_items(NULL, _("msg b"));
>       if (c)
>               append_l10n_list_items(NULL, _("msg c"));
>
>       append_l10n_list_items(&extra, NULL);
> ...
--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Index of Archives]     [Linux Kernel Development]     [Gcc Help]     [IETF Annouce]     [DCCP]     [Netdev]     [Networking]     [Security]     [V4L]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux SCSI]     [Fedora Users]