Mercurial > vim
diff src/po/big5corr.c @ 33823:45c0a5330758 v9.0.2127
patch 9.0.2127: translation Makefiles can be improved
Commit: https://github.com/vim/vim/commit/e214692718d6a997a0540fc688e1417564416f80
Author: RestorerZ <restorer@mail2k.ru>
Date: Thu Nov 23 20:58:32 2023 +0100
patch 9.0.2127: translation Makefiles can be improved
Problem: translation Makefiles can be improved
Solution: Modified and extended po-related Makefiles and
related files
closes: #13518
Signed-off-by: RestorerZ <restorer@mail2k.ru>
Signed-off-by: Christian Brabandt <cb@256bit.org>
author | Christian Brabandt <cb@256bit.org> |
---|---|
date | Thu, 23 Nov 2023 21:15:03 +0100 |
parents | |
children |
line wrap: on
line diff
new file mode 100644 --- /dev/null +++ b/src/po/big5corr.c @@ -0,0 +1,58 @@ +/* + * Simplistic program to correct Big5 inside strings. When a trail byte is a + * backslash it needs to be doubled. + * Public domain. + */ + +/* + * 06.11.23, added by Restorer: + * For more details, see: + * https://github.com/vim/vim/pull/3261 + * https://github.com/vim/vim/pull/3476 + * https://github.com/vim/vim/pull/12153 + * (read all comments) + * + * I checked the workability on the list of backslash characters + * specified in zh_TW.UTF-8.po. It works. + * But it is better to have someone native speaker check it. + * + */ + +#include <stdio.h> +#include <string.h> + + int +main(int argc, char **argv) +{ + char buffer[BUFSIZ]; + char *p; + + while (fgets(buffer, BUFSIZ, stdin) != NULL) + { + for (p = buffer; *p != 0; p++) + { + if (strncmp(p, "charset=utf-8", 13) == 0 + || strncmp(p, "charset=UTF-8", 13) == 0) + { + fputs("charset=BIG-5", stdout); + p += 12; + } + else if (strncmp(p, "# Original translations", 23) == 0) + { + fputs("# Generated from zh_TW.UTF-8.po, DO NOT EDIT.", stdout); + while (p[1] != '\n') + ++p; + } + else + { + if (*(unsigned char *)p >= 0xA1) + { + putchar(*p++); + if (*p == '\\') + putchar(*p); + } + putchar(*p); + } + } + } +}