@publidata/utils-translation
Version:
Collection of methods to handle translation
644 lines (627 loc) • 19.7 kB
JavaScript
import { toSnakeCase, toPascalCase } from "@publidata/utils-core";
const registry = {};
/** Return french translation fo the specified model
* @ Type : String
* @ Return : french word for model
*
* [dict] : Array of object OPTIONAL
* {
* "case": "input",
* "translated": "output"
* }
*/
export const translateModel = (type, dict) => {
if (dict) {
const index = dict.findIndex(w => {
return w.case === type;
});
if (index !== -1) {
return dict[index].translated;
}
}
switch (type) {
case "news":
return "Actualité";
case "nonprofit":
return "Association";
case "newz":
return "Actualités";
case "facility":
return "Équipement";
case "facilities":
return "Équipements";
case "etablissementpublic":
return "Établissement publique";
case "etablissementpublics":
return "Établissements publiques";
case "communauteagglomeration":
return "Agglomération";
case "communauteagglomerations":
return "Agglomérations";
case "city":
return "Ville";
case "cities":
return "Villes";
case "department":
return "Départment";
case "departments":
return "Départements";
case "elect":
return "Élu";
case "elects":
return "Élus";
case "region":
return "Région";
case "regions":
return "Régions";
case "event":
return "Événement";
case "events":
return "Événements";
case "eventgroup":
case "event_group":
return "Groupe d'événements";
case "eventgroups":
case "event_groups":
return "Groupes d'événements";
case "project":
return "Projet";
case "projects":
return "Projets";
case "skill":
return "Compétence";
case "skills":
return "Compétences";
case "page":
return "Page";
case "pages":
return "Pages";
case "company":
return "Entreprise";
case "companies":
return "Entreprises";
case "non_profit":
return "Association";
case "non_profits":
return "Associations";
case "service":
return "Démarche";
default:
return type;
}
};
registry.model = translateModel;
/** Returns a rewritten name for collect widget of Tours
* @ Type : String
* @ Return : rewritten Name
* */
export const collectNameTranslation = (type, garbageTypes, names = {}) => {
if (garbageTypes && garbageTypes.length > 1) {
return "Collecte itinérante";
} else if (type === "WasteCollection" || type === "Facility") {
switch (garbageTypes[0]) {
case "enc":
return names.enc ? names.enc : "Encombrants";
case "text":
return names.text ? names.text : "Textile";
case "emb":
return names.emb ? names.emb : "Emballages";
case "dv":
return names.dv ? names.dv : "Déchets verts";
case "omr":
return names.omr ? names.omr : "Ordures ménagères";
case "verre":
return names.verre ? names.verre : "Verre";
case "bio":
return names.bio ? names.bio : "Biodéchets";
case "jrm":
return names.bio ? names.bio : "Journaux - Magazines";
default:
return "Coming soon";
}
}
return "Coming soon";
};
/** Returns a rewritten icon for collect widget of Tours
* @ Type : String
* @ Return : rewritten Icon
* */
export const collectIconTranslation = collectionMode => {
switch (collectionMode) {
case "truck":
return "fas fa-truck";
case "booking":
return "fas fa-calendar-check";
case "recycling_center":
return "fas fa-building";
case "mobile":
return "fas fa-route";
case "recycling_bin":
return "fas fa-person-carry";
case "at_home":
return "fas fa-home";
case "reuse":
return "fas fa-hands-helping";
default: {
return "fas fa-truck";
}
}
};
/** Returns a rewritten collection mode for collect widget of Tours
* @ Type : String
* @ Return : rewritten Collection Mode
* */
export const collectionModeTranslation = collectionMode => {
switch (collectionMode) {
case "truck":
return "Collecte à domicile";
case "request_by_phone":
return "Collecte sur appel";
case "recycling_center":
return "Collecte en déchèterie";
case "mobile":
return "Collecte itinérante";
case "recycling_bin":
return "Point d'apport volontaire";
case "booking":
return "Sur réservation";
case "pneumatic":
return "Collecte pneumatique";
default: {
return "Mode de collecte non définit";
}
}
};
/** Returns a rewritten color for collect widget of Tours
* @ Type : String
* @ Return : rewritten Color
* */
export const poiColorTranslation = (facilityType, defaultValue = "A0A0A0") => {
switch (facilityType) {
case "Déchetterie":
return "var(--facility)";
case "Point d'apport volontaire textile":
return "var(--text)";
case "Point d'apport volontaire textile itinérant":
return "var(--mobile-text)";
case "Point d'apport volontaire emballages":
case "Point d'apport volontaire emballages plastiques":
case "Borne pneumatique emballages":
return "var(--emb)";
case "Point d'apport volontaire végétaux":
case "Aire de dépôt de végétaux":
return "var(--dv)";
case "Point d'apport volontaire ordures ménagères":
case "Borne pneumatique ordures ménagères":
return "var(--omr)";
case "Point d'apport volontaire verre":
return "var(--verre)";
case "Point d'apport volontaire sapin":
return "var(--sapin)";
case "Point d'apport volontaire biodéchet":
return "var(--bio)";
case "Point d'apport volontaire carton":
return "var(--carton)";
case "Point d'apport volontaire itinérant":
return "var(--mobile)";
case "Point d'apport volontaire papiers-journaux-magazines":
return "var(--jrm)";
case "Canisite":
case "Crottinette":
case "Distributeur de sacs pour déjection canine":
case "Point d'apport volontaire pour déjection canine":
return "var(--canin)";
case "Composteur de quartier":
case "Composteur collectif":
case "Composteur":
return "var(--compost)";
case "Point d'apport volontaire itinérant de collecte des déchets dangereux des ménages":
case "Point d'apport volontaire de collecte des déchets dangereux des ménages":
return "var(--ddm)";
case "Point d'apport volontaire emballages métalliques":
return "var(--embm)";
case "Point d'apport volontaire de collecte des déchets électriques et électroniques":
return "var(--deee)";
case "Boîte à livres":
return "var(--livre)";
case "Boîte à vaisselle":
return "var(--vaisselle)";
case "Atelier de co-réparation":
return "var(--co_repair_workbench)";
case "Zone de gratuité":
return "var(--toll_free_area)";
case "Ressourcerie":
return "var(--resource_center)";
case "Recyclerie":
return "var(--recyclerie)";
case "Zone de dépôt exceptionnel":
return "var(--free_dump_area)";
case "Centre d'enfouissement":
return "var(--landfill_center)";
case "Plateforme de compostage":
return "var(--compost_center)";
case "Centre de tri":
return "var(--storage_center)";
case "Borne à masques":
return "var(--masque)";
case "Borne à piles":
return "var(--pile)";
case "Pharmacie":
return "var(--mnu)";
case "Point d'apport volontaire ampoules":
return "var(--light_bulb)";
case "Point d'apport volontaire textile sanitaire":
return "var(--textsan)";
case "Magasin de bricolage":
return "var(--dds)";
case "Magasin de vélos d'occasion":
return "var(--bike)";
case "Point d'apport volontaire de déchets automobiles":
case "Garage de réparation automobile":
return "var(--dauto)";
case "Point d'apport volontaire gravats":
return "var(--grav)";
case "Point d'apport volontaire pour déchets alimentaires":
return "var(--alim)";
case "Point d'apport volontaire néons":
return "var(--neon)";
case "Point d'apport volontaire chaussures":
return "var(--shoes)";
case "Point d'apport volontaire bouchons en liège":
return "var(--cork)";
case "Point d'apport volontaire capsules de café":
return "var(--coffee_capsule)";
case "Opticien":
return "var(--eyeglasses)";
case "Point d'apport volontaire CD et DVD":
return "var(--cd)";
case "Point d'apport volontaire téléphones portables":
return "var(--mobile_phone)";
case "Point d'apport volontaire ordinateurs":
return "var(--computer)";
case "Point d'apport volontaire jeux et jouets":
return "var(--toy)";
case "Point d'apport volontaire maroquinerie":
return "var(--leather_good)";
case "Point d'apport volontaire bouchons en plastique":
return "var(--plastic_cap)";
case "Point de regroupement verre":
return "var(--verre)";
case "Point de regroupement ordures ménagères":
return "var(--omr)";
case "Point de regroupement emballages":
return "var(--emb)";
case "Borne mégots":
return "var(--butt)";
case "Zone de réemploi":
return "var(--zone-de-reemploi)";
case "Point de distribution de sacs":
return "var(--point-de-distribution-de-sacs)";
case "Point de distribution événementiel de sacs":
return "var(--point-de-distribution-evenementiel-de-sacs)";
case "Point de distribution événementiel de sacs pour les professionnels":
return "var(--point-de-distribution-evenementiel-de-sacs-pour-les-professionnels)";
case "Point de distribution de sacs pour les professionnels":
return "var(--point-de-distribution-de-sacs-pour-les-professionnels)";
case "Magasin de vêtements de seconde main":
return "var(--magasin-de-vetements-de-seconde-main)";
case "Librairie de livres d'occasion":
return "var(--librairie-de-livres-d-occasion)";
case "Point de distribution d'autocollants":
return "var(--point-de-distribution-d-autocollants)";
case "Permanence compostage":
return "var(--permanence-compostage)";
case "Point d'apport volontaire papiers":
return "var(--point-d-apport-volontaire-papiers)";
case "Point d'apport volontaire journaux":
return "var(--point-d-apport-volontaire-journaux)";
case "Point d'apport volontaire d'équipements sportifs":
return "var(--point-d-apport-volontaire-d-equipements-sportifs)";
case "Point d'apport volontaire pour déchets alimentaires":
return "var(--point-d-apport-volontaire-pour-dechets-alimentaires)";
case "Permanence compostage événementielle":
return "var(--permanence-compostage-evenementielle)";
case "Permanence de distribution d'équipements déchets alimentaires":
return "var(--permanence-de-distribution-d-equipement-dechets-alimentaires)";
case "Magasin de materiaux de construction":
return "var(--magasin-de-materiaux-de-construction)";
case "Magasin d'électronique et électroménager":
return "var(--magasin-delectronique-et-electromenager)";
case "Magasin de vente de produits consignés":
return "var(--magasin-de-vente-de-produits-consignes)";
case "Matériauthèque":
return "var(--materiautheque)";
case "Magasin de vente de vrac":
return "var(--magasin-de-vente-de-vrac)";
case "Réparation / vente de matériel et service informatique":
return "var(--reparation-vente-de-materiel-et-service-informatique)";
case "Automate de déconsigne du verre":
return "var(--automate-de-deconsigne-du-verre)";
case "Automate de déconsigne d'emballages recyclables":
return "var(--automate-de-deconsigne-demballages-recyclables)";
default: {
return defaultValue;
}
}
};
export const poiIconTranslation = facilityType => {
switch (facilityType) {
case "Déchetterie":
return "fas fa-building";
case "Point d'apport volontaire textile":
return "fas fa-tshirt";
case "Composteur collectif":
case "Composteur de quartier":
return "fas fa-apple-core";
case "Point d'apport volontaire emballages":
case "Borne pneumatique emballages":
return "fas fa-box-open";
case "Point d'apport volontaire végétaux":
return "fas fa-leaf";
case "Point d'apport volontaire ordures ménagères":
case "Borne pneumatique ordures ménagères":
return "fas fa-trash-alt";
case "Point d'apport volontaire verre":
return "fas fa-wine-bottle";
case "Point d'apport volontaire biodéchets":
return "fas fa-apple-alt";
case "Point d'apport volontaire papiers-journaux-magazines":
return "fas fa-newspaper";
case "Boîte à livres":
return "fas fa-book";
case "Magasin de vêtements de seconde main":
return "fas fa-tshirt";
case "Librairie de livres d'occasion":
return "fas fa-book";
case "Point de distribution d'autocollants":
return "fas fa-mailbox";
case "Permanence compostage":
return "fas fa-leaf";
case "Point d'apport volontaire papiers":
return "fas fa-memo";
case "Point d'apport volontaire journaux":
return "fas fa-newspaper";
case "Point d'apport volontaire d'équipements sportifs":
return "fas fa-volleyball";
case "Point d'apport volontaire pour déchets alimentaires":
return "fas fa-apple-core";
case "Permanence compostage événementielle":
return "fas fa-carrot";
case "Équipement déchets alimentaires":
return "fas fa-carrot";
case "magasin-de-materiaux-de-construction":
return "fak fa-mag-materiaux";
case "automate-de-deconsigne-du-verre":
return "fak fa-automate-verre";
case "magasin-delectronique-et-electromenager":
return "fak fa-mag-deee";
case "automate-de-deconsigne-demballages-recyclables":
return "fak fa-automate-emb-recyclables";
case "magasin-de-vente-de-produits-consignes":
return "fak fa-mag-produits-consignes";
case "materiautheque":
return "fak fa-materiautheque";
case "magasin-de-vente-de-vrac":
return "fak fa-mag-vrac";
case "reparation-vente-de-materiel-et-service-informatique":
return "fak fa-mag-informatique";
default: {
return "fas fa-trash";
}
}
};
export const facilityIconTranslation = id => {
switch (id) {
case 71:
return "recycling_center";
case 79:
return "dasri";
case 85:
case 814:
return "text";
case 86:
return "verre";
case 87:
case 730:
return "omr";
case 89:
return "livre";
case 88:
case 607:
case 731:
return "emb";
case 91:
return "mobile";
case 413:
return "bio";
case 459:
case 600:
return "dv";
case 458:
return "sapin";
case 496:
return "jrm";
case 556:
return "eyeglasses";
case 559:
case 560:
return "compost";
case 561:
return "crottinette";
case 562:
return "canisite";
case 563:
return "distributeur-de-sacs-pour-dejection-canine";
case 566:
return "ddm";
case 605:
return "point-d-apport-volontaire-pour-dechets-alimentaires";
case 606:
return "embm";
case 497:
return "carton";
case 794:
case 640:
return "dauto";
case 697:
return "magasin-de-materiaux-de-construction";
case 700:
return "dds";
case 714:
return "friperie";
case 724:
return "librairie-d-occasion";
case 726:
return "bike";
case 768:
return "deee";
case 772:
return "vaisselle";
case 773:
return "toll_free_area";
case 776:
return "co_repair_workbench";
case 777:
return "resource_center";
case 778:
return "recyclerie";
case 779:
return "reuse";
case 780:
return "storage_center";
case 781:
return "compost_center";
case 782:
return "landfill_center";
case 783:
return "free_dump_area";
case 784:
return "masque";
case 785:
return "pile";
case 787:
return "omr";
case 788:
return "emb";
case 789:
return "verre";
case 792:
return "textsan";
case 795:
return "neon";
case 797:
return "magasin-delectronique-et-electromenager";
case 798:
return "cd";
case 799:
return "mobile_phone";
case 800:
return "plastic_cap";
case 801:
return "toy";
case 802:
return "coffee_capsule";
case 803:
return "computer";
case 804:
return "leather_good";
case 805:
return "shoes";
case 806:
return "cork";
case 807:
return "grav";
case 808:
return "butt";
case 811:
return "multi";
case 815:
return "point-de-distribution-de-sacs";
case 852:
return "point-de-distribution-evenementiel-de-sacs";
case 853:
return "point-de-distribution-de-sacs-pour-les-professionnels";
case 854:
return "point-de-distribution-evenementiel-de-sacs-pour-les-professionnels";
case 905:
return "point-de-distribution-d-autocollants";
case 928:
return "permanence-compostage";
case 961:
return "point-d-apport-volontaire-papiers";
case 962:
return "point-d-apport-volontaire-journaux";
case 963:
return "point-d-apport-volontaire-d-equipements-sportifs";
case 964:
return "permanence-compostage-evenementielle";
case 965:
return "permanence-de-distribution-d-equipement-dechets-alimentaires";
case 999:
return "automate-de-deconsigne-demballages-recyclables";
case 1000:
return "magasin-de-vente-de-produits-consignes";
case 1001:
return "materiautheque";
case 1002:
return "magasin-de-vente-de-vrac";
case 1003:
return "reparation-vente-de-materiel-et-service-informatique";
case 1004:
return "automate-de-deconsigne-du-verre";
default:
return "fas fa-trash";
}
};
export const getSingularFromModel = (model, pascalCase = true) => {
let singularModel = "";
if (!model) return model;
// eslint-disable-next-line no-param-reassign
if (pascalCase) model = toSnakeCase(model);
switch (model) {
case "facilities":
singularModel = "facility";
break;
case "companies":
singularModel = "company";
break;
default:
singularModel = model.slice(0, -1);
break;
}
if (pascalCase) return toPascalCase(singularModel);
return singularModel;
};
export const getPluralFromModel = (model = "", pascalCase = true) => {
let pluralModel = "";
if (!model) return model;
// eslint-disable-next-line no-param-reassign
if (pascalCase) model = toSnakeCase(model);
switch (model) {
case "facility":
pluralModel = "facilities";
break;
case "company":
pluralModel = "companies";
break;
default:
pluralModel = `${model}s`;
break;
}
if (pascalCase) return toPascalCase(pluralModel);
return pluralModel;
};
export const removeAccents = string =>
string.normalize("NFD").replace(/[\u0300-\u036f]/g, "");
export default {
registry,
collectNameTranslation,
collectIconTranslation,
collectionModeTranslation,
poiColorTranslation,
poiIconTranslation,
facilityIconTranslation,
removeAccents,
getPluralFromModel,
getSingularFromModel
};