Source: data-engine-taglib/src/main/resources/META-INF/resources/data_layout_builder/js/utils/lang.es.js

/**
 * Copyright (c) 2000-present Liferay, Inc. All rights reserved.
 *
 * This library is free software; you can redistribute it and/or modify it under
 * the terms of the GNU Lesser General Public License as published by the Free
 * Software Foundation; either version 2.1 of the License, or (at your option)
 * any later version.
 *
 * This library 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 Lesser General Public License for more
 * details.
 */

export function getLocalizedValue(defaultLanguageId, localizedValues) {
	const languageId = themeDisplay.getLanguageId();

	if (localizedValues[languageId]) {
		return localizedValues[languageId];
	}

	return localizedValues[defaultLanguageId];
}

const replaceString = (langKey, args) => {
	const SPLIT_REGEX = /({\d+})/g;

	const keyArray = langKey
		.split(SPLIT_REGEX)
		.filter((val) => val.length !== 0);

	for (let i = 0; i < args.length; i++) {
		const arg = args[i];

		const indexKey = `{${i}}`;

		let argIndex = keyArray.indexOf(indexKey);

		while (argIndex >= 0) {
			keyArray.splice(argIndex, 1, arg);

			argIndex = keyArray.indexOf(indexKey);
		}
	}

	return keyArray;
};

export function sub(langKey, args) {
	return replaceString(langKey, args).join('');
}

export function subComp(langKey, args) {
	return replaceString(langKey, args);
}

export function getPluralMessage(
	singular,
	plural,
	count = 0,
	toString,
	subArray
) {
	const message = count > 1 ? plural : singular;

	return sub(message, subArray || [count.toLocaleString()], toString);
}