import { Locale } from '.';

const camelize = (name: string) => name.substring(1).replace(/^\S/, (s: string) => s.toLocaleLowerCase());

export function get(object: any, path: string) {
  const keys = path.split('.');
  let result = object;

  keys.forEach((key) => {
    result = result[key] ?? '';
  });

  return result;
}

export function createI18nTranslate(name: string, app, newPrefix?: string) {
  const prefix = newPrefix || camelize(name) + '.';
  return (path: string): any => {
    const messages = app?.appContext.config.globalProperties.langMessages || Locale.messages();
    const message = get(messages, prefix + path) || get(messages, path);
    return message;
  };
}