/* * Copyright (C) 2026 - present Instructure, Inc. * * This file is part of Canvas. * * Canvas is free software: you can redistribute it and/or modify it under * the terms of the GNU Affero General Public License as published by the Free * Software Foundation, version 3 of the License. * * Canvas is distributed in the hope that it will be useful, but WITHOUT ANY * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR * A PARTICULAR PURPOSE. See the GNU Affero General Public License for more * details. * * You should have received a copy of the GNU Affero General Public License along * with this program. If not, see . */ // Substitutes {name}-style placeholders in an already-translated string. export function interpolate(template: string, values?: Record): string { if (!values) return template return template.replace(/\{\s*(\w+)\s*\}/g, (match, key) => Object.prototype.hasOwnProperty.call(values, key) ? String(values[key]) : match, ) }