Re: [PATCH] i18n: Not add stripped contents for translation
- From
Jiang Xin <worldhello.net@gmail.com>
- Date
- Mar 6, 2012, 06:47 UTC
- Message-ID
- <CANYiYbFXP_rB82-_ObnPE7NkKpv8NsA7=yu1VY7nRwkRPY5X_A@mail.gmail.com>
- In-Reply-To
- <CANYiYbHGAG5ijeL3yW5SKYAfMNwtme5ELPeGNPhNyKBPGTONMg@mail.gmail.com>
在 2012年3月6日 下午12:16,Jiang Xin <worldhello.net@gmail.com> 写道:
Show 17 quoted lines
> > /* > * 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
Show 8 quoted lines
> 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)
Show 12 quoted lines
> 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], "");Show 22 quoted lines
> }
> 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);
> ...