def METHOD_NAME(self, lang):
    """
    Load old translations and generate new translation file.
                 args.json ---+-----> i18n/<lang>.json
    (old) i18n/<lang>.json ---+
    """
    new = {}
    old = read_file(filepath_i18n(lang))
    def deep_load(keys, default=True, words=('name', 'help')):
        for word in words:
            k = keys + [str(word)]
            d = ".".join(k) if default else str(word)
            v = deep_get(old, keys=k, default=d)
            deep_set(new, keys=k, value=v)
    # Menu
    for path, data in deep_iter(self.task, depth=3):
        if 'tasks' not in path:
            continue
        task_group, _, task = path
        deep_load(['Menu', task_group])
        deep_load(['Task', task])
    # Arguments
    visited_group = set()
    for path, data in deep_iter(self.argument, depth=2):
        if path[0] not in visited_group:
            deep_load([path[0], '_info'])
            visited_group.add(path[0])
        deep_load(path)
        if 'option' in data:
            deep_load(path, words=data['option'], default=False)
    # GUI i18n
    for path, _ in deep_iter(self.gui, depth=2):
        group, key = path
        deep_load(keys=['Gui', group], words=(key,))
    # Copy stage names from MaaFight to MaaFightWeekly
    day_names = ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday', 'Sunday']
    for stage, trans in deep_get(new, keys='MaaFight.Stage', default={}).items():
        if '-' not in stage:
            continue
        for day in day_names:
            if deep_get(new, keys=['MaaFightWeekly', day, stage]):
                deep_set(new, keys=['MaaFightWeekly', day, stage], value=trans)
    write_file(filepath_i18n(lang), new)