def METHOD_NAME(dcs_path: Path, path: Path) -> Iterable[tuple[str, Beacon]]:
    logging.info(f"Loading terrain data from {path}")
    # TODO: Fix case-sensitive issues.
    # The beacons.lua file differs by case in some terrains. Will need to be
    # fixed if the tool is to be run on Linux, but presumably the server
    # wouldn't be able to find these anyway.
    beacons_lua = path / "beacons.lua"
    with cd(dcs_path):
        lua = lupa.LuaRuntime()
        lua.execute(
            textwrap.dedent(
                """\
            function module(name)
            end
        """
            )
        )
        bind_gettext = lua.eval(
            textwrap.dedent(
                """\
            function(py_gettext)
                package.preload["i_18n"] = function()
                    return {
                        translate = py_gettext
                    }
                end
            end
        """
            )
        )
        try:
            translator = gettext.translation(
                "messages", path / "l10n", languages=["en"]
            )
            def translate(message_name: str) -> str:
                if not message_name:
                    return message_name
                return translator.gettext(message_name)
        except FileNotFoundError:
            # TheChannel has no locale data for English.
            def translate(message_name: str) -> str:
                return message_name
        bind_gettext(translate)
        src = beacons_lua.read_text()
        lua.execute(src)
        beacon_types_map: Dict[int, BeaconType] = {}
        for beacon_type in BeaconType:
            beacon_value = lua.eval(beacon_type.name)
            beacon_types_map[beacon_value] = beacon_type
        beacons = lua.eval("beacons")
        for beacon in beacons.values():
            beacon_type_lua = beacon["type"]
            if beacon_type_lua not in beacon_types_map:
                beacon_types_path = (
                    dcs_path / "MissionEditor/modules/me_beaconsInfo.lua"
                )
                raise KeyError(
                    f"Unknown beacon type {beacon_type_lua}. Check that all "
                    f"beacon types in {beacon_types_path} are present in "
                    f"{BeaconType.__class__.__name__}"
                )
            beacon_type = beacon_types_map[beacon_type_lua]
            yield beacon["beaconId"], Beacon(
                beacon["display_name"],
                beacon["callsign"],
                beacon_type,
                convert_lua_frequency(beacon["frequency"]),
                getattr(beacon, "channel", None),
            )