Repository: strapi/strapi
File: packages/core/admin/admin/src/StrapiApp.tsx (TypeScript)

Code before:
  ): InjectionZoneComponent[] => {
    try {
      // @ts-expect-error – we have a catch block so if you don't pass it correctly we still return an array.
      return this.admin.injectionZones[moduleName][containerName][blockName] || [];
    } catch (err) {
      console.error('Cannot get injected component', err);

      return [];
    }
  };

  getPlugin = (pluginId: PluginConfig['id']) => this.plugins[pluginId];

  async register(customRegister?: unknown) {
    this.widgets.register([
      {
        icon: User,
        title: {
          id: 'widget.profile.title',
          defaultMessage: 'Profile',
        },
        component: async () => {
          const { ProfileWidget } = await import('./components/Widgets');
          return ProfileWidget;
        },
        pluginId: 'admin.widget.profile',
        id: 'profile-info',
      },
    ]);

    Object.keys(this.appPlugins).forEach((plugin) => {
      this.appPlugins[plugin].register(this);
    });

    if (isFunction(customRegister)) {
      customRegister(this);
    }
  }

  async loadAdminTrads() {
    const adminLocales = await Promise.all(
      this.configurations.locales.map(async (locale) => {
        try {
          const { default: data } = await import(`./translations/${locale}.js`);

          return { data, locale };
        } catch {
          try {
            const { default: data } = await import(`./translations/${locale}.json`);
            return { data, locale };
          } catch {

Review comment (suggestion):
i think this should be just "admin". It's the id of the package registering the widget, not the id of the widget itself. The id of the widget is then computed inside of the register fn by putting together the pluginId and the id just below

Code after:
  ): InjectionZoneComponent[] => {
    try {
      // @ts-expect-error – we have a catch block so if you don't pass it correctly we still return an array.
      return this.admin.injectionZones[moduleName][containerName][blockName] || [];
    } catch (err) {
      console.error('Cannot get injected component', err);

      return [];
    }
  };

  getPlugin = (pluginId: PluginConfig['id']) => this.plugins[pluginId];

  async register(customRegister?: unknown) {
    this.widgets.register([
      {
        icon: User,
        title: {
          id: 'widget.profile.title',
          defaultMessage: 'Profile',
        },
        component: async () => {
          const { ProfileWidget } = await import('./components/Widgets');
          return ProfileWidget;
        },
        pluginId: 'admin',
        id: 'profile-info',
        link: {
          label: {
            id: 'global.profile.settings',
            defaultMessage: 'Profile settings',
          },
          href: '/me',
        },
      },
    ]);

    Object.keys(this.appPlugins).forEach((plugin) => {
      this.appPlugins[plugin].register(this);
    });

    if (isFunction(customRegister)) {
      customRegister(this);
    }
  }

  async loadAdminTrads() {
    const adminLocales = await Promise.all(
      this.configurations.locales.map(async (locale) => {
        try {
          const { default: data } = await import(`./translations/${locale}.js`);