git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: [PATCH] fixed translation in config file to enhance user output message from the porcelain command(git config). This fixes the error and die function by wrapping it in the _(...) function. This also avoid the code from breaking

From
Stefan Beller <sbeller@google.com>
Date
May 6, 2015, 19:26 UTC
Message-ID
<CAGZ79kaVhYi8amQkRMsHEWZCyMOSWr7NwRaz5TG+pyz5O79k6g@mail.gmail.com>
In-Reply-To
<554a6462.c2bbb40a.1e2a.0255@mx.google.com>
Please don't BCC all recipients, but just CC or send it to them.
On Wed, May 6, 2015 at 11:51 AM, Alangi Derick <alangiderick@gmail.com> wrote:

Usually here comes a rationale why the changes below are worth accepting such as:

    This enables translations in git-config, which is a porcelain user facing
    command, so we want to show localized error messages.

Mind that there are 2 different files ./config.c and ./builtin/config.c While ./builtin/config.c is used for the "git config" command and would benefit from the error translation, I am unsure about ./config.c

All files directly in the top level directory from Git are usually quite library like and used by the different commands in the builtin/ directory. So I suspect there is a plumbing command which would make use of these code paths, which is what we want to avoid.

Show 204 quoted lines
> Signed-off-by: Alangi Derick <alangiderick@gmail.com>
> ---
>  config.c | 46 +++++++++++++++++++++++-----------------------
>  1 file changed, 23 insertions(+), 23 deletions(-)
>
> diff --git a/config.c b/config.c
> index 66c0a51..cc41dbb 100644
> --- a/config.c
> +++ b/config.c
> @@ -76,7 +76,7 @@ static int config_buf_ungetc(int c, struct config_source *conf)
>         if (conf->u.buf.pos > 0) {
>                 conf->u.buf.pos--;
>                 if (conf->u.buf.buf[conf->u.buf.pos] != c)
> -                       die("BUG: config_buf can only ungetc the same character");
> +                       die(_("BUG: config_buf can only ungetc the same character"));
>                 return c;
>         }
>
> @@ -106,7 +106,7 @@ static int handle_path_include(const char *path, struct config_include_data *inc
>
>         expanded = expand_user_path(path);
>         if (!expanded)
> -               return error("Could not expand include path '%s'", path);
> +               return error(_("Could not expand include path '%s'"), path);
>         path = expanded;
>
>         /*
> @@ -117,7 +117,7 @@ static int handle_path_include(const char *path, struct config_include_data *inc
>                 char *slash;
>
>                 if (!cf || !cf->path)
> -                       return error("relative config includes must come from files");
> +                       return error(_("relative config includes must come from files"));
>
>                 slash = find_last_dir_sep(cf->path);
>                 if (slash)
> @@ -177,7 +177,7 @@ int git_config_parse_parameter(const char *text,
>
>         pair = strbuf_split_str(text, '=', 2);
>         if (!pair[0])
> -               return error("bogus config parameter: %s", text);
> +               return error(_("bogus config parameter: %s"), text);
>
>         if (pair[0]->len && pair[0]->buf[pair[0]->len - 1] == '=') {
>                 strbuf_setlen(pair[0], pair[0]->len - 1);
> @@ -189,7 +189,7 @@ int git_config_parse_parameter(const char *text,
>         strbuf_trim(pair[0]);
>         if (!pair[0]->len) {
>                 strbuf_list_free(pair);
> -               return error("bogus config parameter: %s", text);
> +               return error(_("bogus config parameter: %s"), text);
>         }
>         strbuf_tolower(pair[0]);
>         if (fn(pair[0]->buf, value, data) < 0) {
> @@ -854,7 +854,7 @@ static int git_default_core_config(const char *var, const char *value)
>                         comment_line_char = value[0];
>                         auto_comment_line_char = 0;
>                 } else
> -                       return error("core.commentChar should only be one character");
> +                       return error(_("core.commentChar should only be one character"));
>                 return 0;
>         }
>
> @@ -949,7 +949,7 @@ static int git_default_branch_config(const char *var, const char *value)
>                 else if (!strcmp(value, "always"))
>                         autorebase = AUTOREBASE_ALWAYS;
>                 else
> -                       return error("Malformed value for %s", var);
> +                       return error(_("Malformed value for %s"), var);
>                 return 0;
>         }
>
> @@ -976,8 +976,8 @@ static int git_default_push_config(const char *var, const char *value)
>                         push_default = PUSH_DEFAULT_CURRENT;
>                 else {
>                         error("Malformed value for %s: %s", var, value);
> -                       return error("Must be one of nothing, matching, simple, "
> -                                    "upstream or current.");
> +                       return error(_("Must be one of nothing, matching, simple, "
> +                                    "upstream or current."));
>                 }
>                 return 0;
>         }
> @@ -1124,10 +1124,10 @@ static int git_config_from_blob_sha1(config_fn_t fn,
>
>         buf = read_sha1_file(sha1, &type, &size);
>         if (!buf)
> -               return error("unable to load config blob object '%s'", name);
> +               return error(_("unable to load config blob object '%s'"), name);
>         if (type != OBJ_BLOB) {
>                 free(buf);
> -               return error("reference '%s' does not point to a blob", name);
> +               return error(_("reference '%s' does not point to a blob"), name);
>         }
>
>         ret = git_config_from_buf(fn, name, buf, size, data);
> @@ -1143,7 +1143,7 @@ static int git_config_from_blob_ref(config_fn_t fn,
>         unsigned char sha1[20];
>
>         if (get_sha1(name, sha1) < 0)
> -               return error("unable to resolve config blob '%s'", name);
> +               return error(_("unable to resolve config blob '%s'"), name);
>         return git_config_from_blob_sha1(fn, name, sha1, data);
>  }
>
> @@ -1173,7 +1173,7 @@ unsigned long git_env_ulong(const char *k, unsigned long val)
>  {
>         const char *v = getenv(k);
>         if (v && !git_parse_ulong(v, &val))
> -               die("failed to parse %s", k);
> +               die(_("failed to parse %s"), k);
>         return val;
>  }
>
> @@ -1720,7 +1720,7 @@ static int store_aux(const char *key, const char *value, void *cb)
>
>  static int write_error(const char *filename)
>  {
> -       error("failed to write new configuration file %s", filename);
> +       error(_("failed to write new configuration file %s"), filename);
>
>         /* Same error code as "failed to rename". */
>         return 4;
> @@ -1859,12 +1859,12 @@ int git_config_parse_key(const char *key, char **store_key, int *baselen_)
>          */
>
>         if (last_dot == NULL || last_dot == key) {
> -               error("key does not contain a section: %s", key);
> +               error(_("key does not contain a section: %s"), key);
>                 return -CONFIG_NO_SECTION_OR_NAME;
>         }
>
>         if (!last_dot[1]) {
> -               error("key does not contain variable name: %s", key);
> +               error(_("key does not contain variable name: %s"), key);
>                 return -CONFIG_NO_SECTION_OR_NAME;
>         }
>
> @@ -1886,12 +1886,12 @@ int git_config_parse_key(const char *key, char **store_key, int *baselen_)
>                 if (!dot || i > baselen) {
>                         if (!iskeychar(c) ||
>                             (i == baselen + 1 && !isalpha(c))) {
> -                               error("invalid key: %s", key);
> +                               error(_("invalid key: %s"), key);
>                                 goto out_free_ret_1;
>                         }
>                         c = tolower(c);
>                 } else if (c == '\n') {
> -                       error("invalid key (newline): %s", key);
> +                       error(_("invalid key (newline): %s"), key);
>                         goto out_free_ret_1;
>                 }
>                 (*store_key)[i] = c;
> @@ -2113,7 +2113,7 @@ int git_config_set_multivar_in_file(const char *config_filename,
>         }
>
>         if (commit_lock_file(lock) < 0) {
> -               error("could not commit config file %s", config_filename);
> +               error(_("could not commit config file %s"), config_filename);
>                 ret = CONFIG_NO_WRITE;
>                 lock = NULL;
>                 goto out_free;
> @@ -2228,7 +2228,7 @@ int git_config_rename_section_in_file(const char *config_filename,
>         lock = xcalloc(1, sizeof(struct lock_file));
>         out_fd = hold_lock_file_for_update(lock, config_filename, 0);
>         if (out_fd < 0) {
> -               ret = error("could not lock config file %s", config_filename);
> +               ret = error(_("could not lock config file %s"), config_filename);
>                 goto out;
>         }
>
> @@ -2240,7 +2240,7 @@ int git_config_rename_section_in_file(const char *config_filename,
>         fstat(fileno(config_file), &st);
>
>         if (chmod(lock->filename.buf, st.st_mode & 07777) < 0) {
> -               ret = error("chmod on %s failed: %s",
> +               ret = error(_("chmod on %s failed: %s"),
>                                 lock->filename.buf, strerror(errno));
>                 goto out;
>         }
> @@ -2295,7 +2295,7 @@ int git_config_rename_section_in_file(const char *config_filename,
>         fclose(config_file);
>  unlock_and_out:
>         if (commit_lock_file(lock) < 0)
> -               ret = error("could not commit config file %s", config_filename);
> +               ret = error(_("could not commit config file %s"), config_filename);
>  out:
>         free(filename_buf);
>         return ret;
> @@ -2313,7 +2313,7 @@ int git_config_rename_section(const char *old_name, const char *new_name)
>  #undef config_error_nonbool
>  int config_error_nonbool(const char *var)
>  {
> -       return error("Missing value for '%s'", var);
> +       return error(_("Missing value for '%s'"), var);
>  }
>
>  int parse_config_key(const char *var,
> --
> 2.4.0.dirty
> --
> To unsubscribe from this list: send the line "unsubscribe git" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
Previous: Junio C HamanoNext: Alangi Derick
Message 3 of 5 in “fixed translation in config file to enhance user output message from the porcelain command(git config). This fixes the error and die function by wrapping it in the _(...) function. This also avoid the code from breaking”
  1. fixed translation in config file to enhance user output message from the porcelain command(git config). This fixes the error and die function by wrapping it in the _(...) function. This also avoid the code from breakingAlangi Derick, May 6, 2015
  2. Junio C HamanoMay 6, 2015
  3. Stefan BellerMay 6, 2015
  4. Alangi DerickMay 6, 2015
  5. Junio C HamanoMay 6, 2015

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.