fix: cores e idiomas

This commit is contained in:
Ricardo Carneiro 2025-09-10 01:06:53 -03:00
parent 462ad481f1
commit c76a4ea5ab
38 changed files with 1732 additions and 307 deletions

View File

@ -1,7 +1,17 @@
{
"permissions": {
"allow": [
"Bash(dotnet build)"
"Bash(dotnet build)",
"Bash(dotnet clean:*)",
"Bash(curl:*)",
"Bash(__NEW_LINE__ for culture in pt-BR es-MX es-CL es-PY)",
"Bash(do)",
"Bash(echo:*)",
"Bash(done)",
"Bash(dotnet run:*)",
"Bash(find:*)",
"Bash(pkill:*)",
"WebFetch(domain:localhost)"
],
"deny": [],
"ask": []

View File

@ -1,4 +1,5 @@
using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Localization;
using SixLabors.ImageSharp;
using SixLabors.ImageSharp.Formats.Webp;
@ -7,8 +8,34 @@ namespace Convert_It_Online.Areas.ImageConverters.Controllers
[Area("ImageConverters")]
public class JpgToWebpController : Controller
{
private readonly IStringLocalizer<SharedResource> _localizer;
public JpgToWebpController(IStringLocalizer<SharedResource> localizer)
{
_localizer = localizer;
}
private void SetCommonViewBagProperties()
{
ViewBag.HomeLink = _localizer["HomeLink"];
ViewBag.TextMenuTitle = _localizer["TextMenuTitle"];
ViewBag.ImageMenuTitle = _localizer["ImageMenuTitle"];
ViewBag.CaseConverterTitle = _localizer["CaseConverterTitle"];
ViewBag.JpgToWebpTitle = _localizer["JpgToWebpTitle"];
ViewBag.FooterText = _localizer["FooterText"];
ViewBag.About = _localizer["About"];
ViewBag.Contact = _localizer["Contact"];
ViewBag.Terms = _localizer["Terms"];
}
public IActionResult Index()
{
SetCommonViewBagProperties();
ViewBag.PageTitle = _localizer["ImageConverterPageTitle"];
ViewBag.PageDescription = _localizer["ImageConverterPageDescription"];
ViewBag.FileInputLabel = _localizer["FileInputLabel"];
ViewBag.ConvertButton = _localizer["ConvertButton"];
return View();
}

View File

@ -1,22 +1,19 @@
@using Microsoft.AspNetCore.Mvc.Localization
@inject IViewLocalizer Localizer
@{
ViewData["Title"] = Localizer["PageTitle"];
ViewData["Title"] = ViewBag.PageTitle;
}
<h1>@Localizer["PageTitle"]</h1>
<p>@Localizer["PageDescription"]</p>
<h1>@ViewBag.PageTitle</h1>
<p>@ViewBag.PageDescription</p>
<div class="card mt-4">
<div class="card-body">
<form asp-action="Convert" method="post" enctype="multipart/form-data">
<div asp-validation-summary="ModelOnly" class="text-danger mb-3"></div>
<div class="mb-3">
<label for="jpgFile" class="form-label">@Localizer["FileInputLabel"]</label>
<label for="jpgFile" class="form-label">@ViewBag.FileInputLabel</label>
<input class="form-control" type="file" id="jpgFile" name="jpgFile" accept="image/jpeg" required>
</div>
<button type="submit" class="btn btn-primary">@Localizer["ConvertButton"]</button>
<button type="submit" class="btn btn-primary">@ViewBag.ConvertButton</button>
</form>
</div>
</div>

View File

@ -1,5 +1,6 @@
using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Localization;
using System.ComponentModel.DataAnnotations;
using System.Text.RegularExpressions;
@ -22,10 +23,38 @@ namespace Convert_It_Online.Areas.TextTools.Controllers
[Area("TextTools")]
public class CaseConverterController : Controller
{
private readonly IStringLocalizer<SharedResource> _localizer;
public CaseConverterController(IStringLocalizer<SharedResource> localizer)
{
_localizer = localizer;
}
private void SetCommonViewBagProperties()
{
ViewBag.HomeLink = _localizer["HomeLink"];
ViewBag.TextMenuTitle = _localizer["TextMenuTitle"];
ViewBag.ImageMenuTitle = _localizer["ImageMenuTitle"];
ViewBag.CaseConverterTitle = _localizer["CaseConverterTitle"];
ViewBag.JpgToWebpTitle = _localizer["JpgToWebpTitle"];
ViewBag.FooterText = _localizer["FooterText"];
ViewBag.About = _localizer["About"];
ViewBag.Contact = _localizer["Contact"];
ViewBag.Terms = _localizer["Terms"];
}
// Método GET: Apenas exibe a página com um formulário vazio.
[HttpGet]
public IActionResult Index()
{
SetCommonViewBagProperties();
ViewBag.PageTitle = _localizer["TextToolsPageTitle"];
ViewBag.TextAreaLabel = _localizer["TextAreaLabel"];
ViewBag.ToUpperButton = _localizer["ToUpperButton"];
ViewBag.ToLowerButton = _localizer["ToLowerButton"];
ViewBag.ToSentenceCaseButton = _localizer["ToSentenceCaseButton"];
ViewBag.ResultTitle = _localizer["ResultTitle"];
var model = new CaseConverterViewModel();
return View(model);
}
@ -35,6 +64,14 @@ namespace Convert_It_Online.Areas.TextTools.Controllers
[ValidateAntiForgeryToken]
public IActionResult Index([FromForm] CaseConverterViewModel model)
{
SetCommonViewBagProperties();
ViewBag.PageTitle = _localizer["TextToolsPageTitle"];
ViewBag.TextAreaLabel = _localizer["TextAreaLabel"];
ViewBag.ToUpperButton = _localizer["ToUpperButton"];
ViewBag.ToLowerButton = _localizer["ToLowerButton"];
ViewBag.ToSentenceCaseButton = _localizer["ToSentenceCaseButton"];
ViewBag.ResultTitle = _localizer["ResultTitle"];
if (!ModelState.IsValid || string.IsNullOrEmpty(model.InputText))
{
// Se o modelo for inválido ou o texto estiver vazio, retorna a view sem fazer nada.

View File

@ -1,32 +1,29 @@
@using Microsoft.AspNetCore.Mvc.Localization
@inject IViewLocalizer Localizer
@model Convert_It_Online.Areas.TextTools.Controllers.CaseConverterViewModel
@{
ViewData["Title"] = Localizer["PageTitle"];
ViewData["Title"] = ViewBag.PageTitle;
}
<h1 class="mb-4">@Localizer["PageTitle"]</h1>
<h1 class="mb-4">@ViewBag.PageTitle</h1>
<form asp-action="Index" method="post">
@Html.AntiForgeryToken()
<div class="mb-3">
<label asp-for="InputText" class="form-label">@Localizer["TextAreaLabel"]</label>
<label asp-for="InputText" class="form-label">@ViewBag.TextAreaLabel</label>
<textarea asp-for="InputText" class="form-control" rows="8"></textarea>
</div>
<div class="d-flex flex-wrap gap-2">
<button type="submit" name="ConversionType" value="upper" class="btn btn-primary">@Localizer["ToUpperButton"]</button>
<button type="submit" name="ConversionType" value="lower" class="btn btn-secondary">@Localizer["ToLowerButton"]</button>
<button type="submit" name="ConversionType" value="sentence" class="btn btn-info">@Localizer["ToSentenceCaseButton"]</button>
<button type="submit" name="ConversionType" value="upper" class="btn btn-primary">@ViewBag.ToUpperButton</button>
<button type="submit" name="ConversionType" value="lower" class="btn btn-secondary">@ViewBag.ToLowerButton</button>
<button type="submit" name="ConversionType" value="sentence" class="btn btn-info">@ViewBag.ToSentenceCaseButton</button>
</div>
</form>
@if (!string.IsNullOrEmpty(Model.ResultText))
{
<hr class="my-4" />
<h2>@Localizer["ResultTitle"]</h2>
<h2>@ViewBag.ResultTitle</h2>
<textarea asp-for="ResultText" class="form-control" rows="8" readonly="readonly"></textarea>
}

View File

@ -1,4 +1,5 @@
using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Localization;
using System.Collections.Generic;
namespace Convert_It_Online.Controllers
@ -16,8 +17,42 @@ namespace Convert_It_Online.Controllers
public class HomeController : Controller
{
private readonly IStringLocalizer<SharedResource> _localizer;
public HomeController(IStringLocalizer<SharedResource> localizer)
{
_localizer = localizer;
}
private void SetCommonViewBagProperties()
{
ViewBag.HomeLink = _localizer["HomeLink"];
ViewBag.TextMenuTitle = _localizer["TextMenuTitle"];
ViewBag.ImageMenuTitle = _localizer["ImageMenuTitle"];
ViewBag.CaseConverterTitle = _localizer["CaseConverterTitle"];
ViewBag.JpgToWebpTitle = _localizer["JpgToWebpTitle"];
ViewBag.FooterText = _localizer["FooterText"];
ViewBag.About = _localizer["About"];
ViewBag.Contact = _localizer["Contact"];
ViewBag.Terms = _localizer["Terms"];
}
public IActionResult Index()
{
SetCommonViewBagProperties();
ViewBag.PageTitle = _localizer["PageTitle"];
ViewBag.Subtitle = _localizer["Subtitle"];
ViewBag.ChooseConverter = _localizer["ChooseConverter"];
ViewBag.AboutSiteTitle = _localizer["AboutSiteTitle"];
ViewBag.AboutSiteContent = _localizer["AboutSiteContent"];
ViewBag.WhyFreeTitle = _localizer["WhyFreeTitle"];
ViewBag.WhyFreeContent = _localizer["WhyFreeContent"];
ViewBag.SecurityTitle = _localizer["SecurityTitle"];
ViewBag.SecurityContent = _localizer["SecurityContent"];
ViewBag.TextToolsTitle = _localizer["TextToolsTitle"];
ViewBag.TextToolsDescription = _localizer["TextToolsDescription"];
ViewBag.ImageToolsTitle = _localizer["ImageToolsTitle"];
ViewBag.ImageToolsDescription = _localizer["ImageToolsDescription"];
var availableTools = new List<ToolViewModel>
{
new ToolViewModel
@ -40,5 +75,54 @@ namespace Convert_It_Online.Controllers
return View(availableTools);
}
public IActionResult About()
{
SetCommonViewBagProperties();
ViewBag.AboutTitle = _localizer["AboutTitle"];
ViewBag.WhatIsTitle = _localizer["WhatIsTitle"];
ViewBag.WhatIsContent = _localizer["WhatIsContent"];
ViewBag.MissionTitle = _localizer["MissionTitle"];
ViewBag.MissionContent = _localizer["MissionContent"];
ViewBag.FeaturesTitle = _localizer["FeaturesTitle"];
ViewBag.Feature1 = _localizer["Feature1"];
ViewBag.Feature2 = _localizer["Feature2"];
ViewBag.Feature3 = _localizer["Feature3"];
ViewBag.Feature4 = _localizer["Feature4"];
ViewBag.StartConverting = _localizer["StartConverting"];
return View();
}
public IActionResult Contact()
{
SetCommonViewBagProperties();
ViewBag.ContactTitle = _localizer["ContactTitle"];
ViewBag.ContactIntro = _localizer["ContactIntro"];
ViewBag.EmailTitle = _localizer["EmailTitle"];
ViewBag.SupportTitle = _localizer["SupportTitle"];
ViewBag.SupportTime = _localizer["SupportTime"];
ViewBag.FaqTitle = _localizer["FaqTitle"];
return View();
}
public IActionResult Terms()
{
SetCommonViewBagProperties();
ViewBag.TermsTitle = _localizer["TermsTitle"];
ViewBag.TermsIntro = _localizer["TermsIntro"];
ViewBag.AcceptanceTitle = _localizer["AcceptanceTitle"];
ViewBag.AcceptanceContent = _localizer["AcceptanceContent"];
ViewBag.ServiceTitle = _localizer["ServiceTitle"];
ViewBag.ServiceContent = _localizer["ServiceContent"];
ViewBag.PrivacyTitle = _localizer["PrivacyTitle"];
ViewBag.PrivacyContent = _localizer["PrivacyContent"];
ViewBag.LimitationTitle = _localizer["LimitationTitle"];
ViewBag.LimitationContent = _localizer["LimitationContent"];
ViewBag.ChangesTitle = _localizer["ChangesTitle"];
ViewBag.ChangesContent = _localizer["ChangesContent"];
ViewBag.LastUpdated = _localizer["LastUpdated"];
ViewBag.BackToHome = _localizer["BackToHome"];
return View();
}
}
}

View File

@ -5,7 +5,7 @@ using Microsoft.AspNetCore.Localization.Routing;
// 1. Builder e Serviços
var builder = WebApplication.CreateBuilder(args);
builder.Services.AddLocalization(options => options.ResourcesPath = "Resources");
builder.Services.AddLocalization();
builder.Services.AddControllersWithViews()
.AddViewLocalization(Microsoft.AspNetCore.Mvc.Razor.LanguageViewLocationExpanderFormat.Suffix);
@ -24,6 +24,8 @@ var localizationOptions = new RequestLocalizationOptions
localizationOptions.RequestCultureProviders.Clear();
localizationOptions.RequestCultureProviders.Insert(0, new RouteDataRequestCultureProvider());
localizationOptions.RequestCultureProviders.Insert(1, new QueryStringRequestCultureProvider());
localizationOptions.RequestCultureProviders.Insert(2, new AcceptLanguageHeaderRequestCultureProvider());
// 3. Pipeline de Middlewares (na ordem correta)
if (app.Environment.IsDevelopment())
@ -54,11 +56,10 @@ app.MapControllerRoute(
name: "default",
pattern: "{culture:length(2,5)}/{controller=Home}/{action=Index}/{id?}");
app.MapFallback(async context =>
{
context.Response.Redirect("/pt-BR");
await Task.CompletedTask;
});
app.MapControllerRoute(
name: "root",
pattern: "{controller=Home}/{action=Index}/{id?}",
defaults: new { culture = "pt-BR" });
// 5. Execução
app.Run();

View File

@ -0,0 +1,42 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<data name="PageTitle" xml:space="preserve">
<value>Conversores Online Gratuitos</value>
</data>
<data name="Subtitle" xml:space="preserve">
<value>Converta textos, imagens e documentos gratuitamente. Ferramentas online rápidas e seguras, sem necessidade de instalação.</value>
</data>
<data name="TextToolsTitle" xml:space="preserve">
<value>Ferramentas de Texto</value>
</data>
<data name="TextToolsDescription" xml:space="preserve">
<value>Converta, formate e manipule textos facilmente.</value>
</data>
<data name="ImageToolsTitle" xml:space="preserve">
<value>Conversores de Imagem</value>
</data>
<data name="ImageToolsDescription" xml:space="preserve">
<value>Otimize e converta imagens para qualquer formato.</value>
</data>
<data name="AboutSiteTitle" xml:space="preserve">
<value>Sobre o Convert-It Online</value>
</data>
<data name="AboutSiteContent" xml:space="preserve">
<value>Convert-It Online é uma plataforma gratuita que oferece diversas ferramentas de conversão para facilitar seu trabalho diário. Todas as conversões são realizadas de forma segura, sem armazenamento de seus arquivos em nossos servidores.</value>
</data>
<data name="WhyFreeTitle" xml:space="preserve">
<value>Por que é gratuito?</value>
</data>
<data name="WhyFreeContent" xml:space="preserve">
<value>Acreditamos que ferramentas úteis devem ser acessíveis a todos. Nosso site é mantido através de anúncios não intrusivos, permitindo que você use todos os conversores sem custo algum.</value>
</data>
<data name="SecurityTitle" xml:space="preserve">
<value>Segurança e privacidade</value>
</data>
<data name="SecurityContent" xml:space="preserve">
<value>Seus arquivos são processados localmente no seu navegador sempre que possível. Para conversões que requerem processamento no servidor, os arquivos são automaticamente excluídos após a conversão.</value>
</data>
<data name="ChooseConverter" xml:space="preserve">
<value>Escolha seu Conversor</value>
</data>
</root>

View File

@ -0,0 +1,4 @@
// This class is used as a key for shared resources
public class SharedResources
{
}

View File

@ -0,0 +1,42 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<data name="PageTitle" xml:space="preserve">
<value>Conversores Online Gratuitos</value>
</data>
<data name="Subtitle" xml:space="preserve">
<value>Converta textos, imagens e documentos gratuitamente. Ferramentas online rápidas e seguras, sem necessidade de instalação.</value>
</data>
<data name="TextToolsTitle" xml:space="preserve">
<value>Ferramentas de Texto</value>
</data>
<data name="TextToolsDescription" xml:space="preserve">
<value>Converta, formate e manipule textos facilmente.</value>
</data>
<data name="ImageToolsTitle" xml:space="preserve">
<value>Conversores de Imagem</value>
</data>
<data name="ImageToolsDescription" xml:space="preserve">
<value>Otimize e converta imagens para qualquer formato.</value>
</data>
<data name="AboutSiteTitle" xml:space="preserve">
<value>Sobre o Convert-It Online</value>
</data>
<data name="AboutSiteContent" xml:space="preserve">
<value>Convert-It Online é uma plataforma gratuita que oferece diversas ferramentas de conversão para facilitar seu trabalho diário. Todas as conversões são realizadas de forma segura, sem armazenamento de seus arquivos em nossos servidores.</value>
</data>
<data name="WhyFreeTitle" xml:space="preserve">
<value>Por que é gratuito?</value>
</data>
<data name="WhyFreeContent" xml:space="preserve">
<value>Acreditamos que ferramentas úteis devem ser acessíveis a todos. Nosso site é mantido através de anúncios não intrusivos, permitindo que você use todos os conversores sem custo algum.</value>
</data>
<data name="SecurityTitle" xml:space="preserve">
<value>Segurança e privacidade</value>
</data>
<data name="SecurityContent" xml:space="preserve">
<value>Seus arquivos são processados localmente no seu navegador sempre que possível. Para conversões que requerem processamento no servidor, os arquivos são automaticamente excluídos após a conversão.</value>
</data>
<data name="ChooseConverter" xml:space="preserve">
<value>Escolha seu Conversor</value>
</data>
</root>

4
SharedResource.cs Normal file
View File

@ -0,0 +1,4 @@
// Class for shared resources
public class SharedResource
{
}

220
SharedResource.pt-BR.resx Normal file
View File

@ -0,0 +1,220 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<data name="PageTitle" xml:space="preserve">
<value>Conversores Online Gratuitos</value>
</data>
<data name="Subtitle" xml:space="preserve">
<value>Converta textos, imagens e documentos gratuitamente. Ferramentas online rápidas e seguras, sem necessidade de instalação.</value>
</data>
<data name="ChooseConverter" xml:space="preserve">
<value>Escolha seu Conversor</value>
</data>
<data name="TextToolsTitle" xml:space="preserve">
<value>Ferramentas de Texto</value>
</data>
<data name="TextToolsDescription" xml:space="preserve">
<value>Converta, formate e manipule textos facilmente.</value>
</data>
<data name="ImageToolsTitle" xml:space="preserve">
<value>Conversores de Imagem</value>
</data>
<data name="ImageToolsDescription" xml:space="preserve">
<value>Otimize e converta imagens para qualquer formato.</value>
</data>
<data name="AboutSiteTitle" xml:space="preserve">
<value>Sobre o Convert-It Online</value>
</data>
<data name="AboutSiteContent" xml:space="preserve">
<value>Convert-It Online é uma plataforma gratuita que oferece diversas ferramentas de conversão para facilitar seu trabalho diário. Todas as conversões são realizadas de forma segura, sem armazenamento de seus arquivos em nossos servidores.</value>
</data>
<data name="WhyFreeTitle" xml:space="preserve">
<value>Por que é gratuito?</value>
</data>
<data name="WhyFreeContent" xml:space="preserve">
<value>Acreditamos que ferramentas úteis devem ser acessíveis a todos. Nosso site é mantido através de anúncios não intrusivos, permitindo que você use todos os conversores sem custo algum.</value>
</data>
<data name="SecurityTitle" xml:space="preserve">
<value>Segurança e privacidade</value>
</data>
<data name="SecurityContent" xml:space="preserve">
<value>Seus arquivos são processados localmente no seu navegador sempre que possível. Para conversões que requerem processamento no servidor, os arquivos são automaticamente excluídos após a conversão.</value>
</data>
<!-- About Page Resources -->
<data name="AboutTitle" xml:space="preserve">
<value>Sobre o Convert-It Online</value>
</data>
<data name="WhatIsTitle" xml:space="preserve">
<value>O que é o Convert-It Online?</value>
</data>
<data name="WhatIsContent" xml:space="preserve">
<value>Convert-It Online é uma plataforma web gratuita que oferece uma ampla gama de ferramentas de conversão para facilitar seu trabalho diário. Nossa missão é tornar a conversão de arquivos simples, rápida e acessível para todos.</value>
</data>
<data name="MissionTitle" xml:space="preserve">
<value>Nossa Missão</value>
</data>
<data name="MissionContent" xml:space="preserve">
<value>Democratizar o acesso a ferramentas de conversão de alta qualidade, oferecendo uma solução gratuita, segura e eficiente para usuários em todo o mundo. Acreditamos que ferramentas úteis devem estar ao alcance de todos.</value>
</data>
<data name="FeaturesTitle" xml:space="preserve">
<value>Nossos Recursos</value>
</data>
<data name="Feature1" xml:space="preserve">
<value>Conversões rápidas e de alta qualidade</value>
</data>
<data name="Feature2" xml:space="preserve">
<value>Processamento seguro sem armazenamento de arquivos</value>
</data>
<data name="Feature3" xml:space="preserve">
<value>Interface intuitiva e fácil de usar</value>
</data>
<data name="Feature4" xml:space="preserve">
<value>Suporte a múltiplos idiomas</value>
</data>
<data name="StartConverting" xml:space="preserve">
<value>Começar a Converter</value>
</data>
<!-- Contact Page Resources -->
<data name="ContactTitle" xml:space="preserve">
<value>Entre em Contato</value>
</data>
<data name="ContactIntro" xml:space="preserve">
<value>Tem alguma dúvida, sugestão ou encontrou algum problema? Estamos aqui para ajudar! Entre em contato conosco através dos canais abaixo.</value>
</data>
<data name="EmailTitle" xml:space="preserve">
<value>Email</value>
</data>
<data name="SupportTitle" xml:space="preserve">
<value>Suporte</value>
</data>
<data name="SupportTime" xml:space="preserve">
<value>24 horas por dia, 7 dias por semana</value>
</data>
<data name="FaqTitle" xml:space="preserve">
<value>Perguntas Frequentes</value>
</data>
<!-- Terms Page Resources -->
<data name="TermsTitle" xml:space="preserve">
<value>Termos de Uso</value>
</data>
<data name="TermsIntro" xml:space="preserve">
<value>Estes Termos de Uso regulam o uso do site Convert-It Online. Ao utilizar nossos serviços, você aceita os termos aqui estabelecidos.</value>
</data>
<data name="AcceptanceTitle" xml:space="preserve">
<value>1. Aceitação dos Termos</value>
</data>
<data name="AcceptanceContent" xml:space="preserve">
<value>Ao acessar e usar Convert-It Online, você aceita e concorda estar sujeito aos termos e condições deste acordo. Se não concordar com qualquer parte destes termos, não deve usar nosso serviço.</value>
</data>
<data name="ServiceTitle" xml:space="preserve">
<value>2. Descrição do Serviço</value>
</data>
<data name="ServiceContent" xml:space="preserve">
<value>Convert-It Online fornece ferramentas gratuitas de conversão de arquivos online. Nossos serviços incluem conversão de textos, imagens e outros tipos de arquivos, sujeitos a disponibilidade e limitações técnicas.</value>
</data>
<data name="PrivacyTitle" xml:space="preserve">
<value>3. Privacidade e Segurança</value>
</data>
<data name="PrivacyContent" xml:space="preserve">
<value>Respeitamos sua privacidade. Os arquivos enviados para conversão são processados temporariamente e deletados automaticamente após o processamento. Não armazenamos, compartilhamos ou analisamos o conteúdo de seus arquivos.</value>
</data>
<data name="LimitationTitle" xml:space="preserve">
<value>4. Limitação de Responsabilidade</value>
</data>
<data name="LimitationContent" xml:space="preserve">
<value>Convert-It Online é fornecido "como está". Não garantimos que o serviço será ininterrupto, seguro ou livre de erros. Não nos responsabilizamos por qualquer perda de dados ou danos resultantes do uso de nossos serviços.</value>
</data>
<data name="ChangesTitle" xml:space="preserve">
<value>5. Modificações aos Termos</value>
</data>
<data name="ChangesContent" xml:space="preserve">
<value>Reservamos o direito de modificar estes termos a qualquer momento. As alterações entrarão em vigor imediatamente após a publicação no site. É sua responsabilidade revisar periodicamente estes termos.</value>
</data>
<data name="LastUpdated" xml:space="preserve">
<value>Última atualização</value>
</data>
<data name="BackToHome" xml:space="preserve">
<value>Voltar ao Início</value>
</data>
<!-- TextTools Page Resources -->
<data name="TextToolsPageTitle" xml:space="preserve">
<value>Conversor de Texto</value>
</data>
<data name="TextAreaLabel" xml:space="preserve">
<value>Digite seu texto aqui</value>
</data>
<data name="ToUpperButton" xml:space="preserve">
<value>MAIÚSCULAS</value>
</data>
<data name="ToLowerButton" xml:space="preserve">
<value>minúsculas</value>
</data>
<data name="ToSentenceCaseButton" xml:space="preserve">
<value>Primeira maiúscula</value>
</data>
<data name="ResultTitle" xml:space="preserve">
<value>Resultado</value>
</data>
<!-- ImageConverter Page Resources -->
<data name="ImageConverterPageTitle" xml:space="preserve">
<value>Conversor JPG para WebP</value>
</data>
<data name="ImageConverterPageDescription" xml:space="preserve">
<value>Converta suas imagens JPG para o formato WebP de forma rápida e eficiente. O WebP oferece melhor compressão mantendo a qualidade da imagem.</value>
</data>
<data name="FileInputLabel" xml:space="preserve">
<value>Selecione um arquivo JPG</value>
</data>
<data name="ConvertButton" xml:space="preserve">
<value>Converter para WebP</value>
</data>
<!-- Navigation Menu Resources -->
<data name="HomeLink" xml:space="preserve">
<value>Início</value>
</data>
<data name="TextMenuTitle" xml:space="preserve">
<value>Texto</value>
</data>
<data name="ImageMenuTitle" xml:space="preserve">
<value>Imagem</value>
</data>
<data name="CaseConverterTitle" xml:space="preserve">
<value>Conversor de Maiúsculas/Minúsculas</value>
</data>
<data name="JpgToWebpTitle" xml:space="preserve">
<value>JPG para WebP</value>
</data>
<!-- Footer Resources -->
<data name="FooterText" xml:space="preserve">
<value>© 2025 Convert-It Online. Ferramentas gratuitas de conversão.</value>
</data>
<data name="About" xml:space="preserve">
<value>Sobre</value>
</data>
<data name="Contact" xml:space="preserve">
<value>Contato</value>
</data>
<data name="Terms" xml:space="preserve">
<value>Termos</value>
</data>
<!-- FAQ Resources for Contact Page -->
<data name="Faq1Question" xml:space="preserve">
<value>Como posso converter meus arquivos de forma segura?</value>
</data>
<data name="Faq1Answer" xml:space="preserve">
<value>Todos os arquivos são processados localmente no seu navegador ou temporariamente em nossos servidores seguros. Após a conversão, os arquivos são automaticamente excluídos.</value>
</data>
<data name="Faq2Question" xml:space="preserve">
<value>Existe algum limite de tamanho para os arquivos?</value>
</data>
<data name="Faq2Answer" xml:space="preserve">
<value>Para garantir a melhor experiência, recomendamos arquivos de até 10MB. Arquivos maiores podem ser processados, mas o tempo de conversão pode ser maior.</value>
</data>
</root>

41
Views/Home/About.cshtml Normal file
View File

@ -0,0 +1,41 @@
@{
ViewData["Title"] = ViewBag.AboutTitle;
}
<div class="container">
<div class="row justify-content-center">
<div class="col-lg-8">
<div class="card shadow-custom">
<div class="card-body p-5">
<h1 class="display-5 mb-4 text-gradient">@ViewBag.AboutTitle</h1>
<div class="mb-4">
<h2 class="h4 text-primary mb-3">@ViewBag.WhatIsTitle</h2>
<p class="text-muted">@ViewBag.WhatIsContent</p>
</div>
<div class="mb-4">
<h2 class="h4 text-primary mb-3">@ViewBag.MissionTitle</h2>
<p class="text-muted">@ViewBag.MissionContent</p>
</div>
<div class="mb-4">
<h2 class="h4 text-primary mb-3">@ViewBag.FeaturesTitle</h2>
<ul class="list-unstyled">
<li class="mb-2"><i class="bi bi-check-circle text-success me-2"></i>@ViewBag.Feature1</li>
<li class="mb-2"><i class="bi bi-check-circle text-success me-2"></i>@ViewBag.Feature2</li>
<li class="mb-2"><i class="bi bi-check-circle text-success me-2"></i>@ViewBag.Feature3</li>
<li class="mb-2"><i class="bi bi-check-circle text-success me-2"></i>@ViewBag.Feature4</li>
</ul>
</div>
<div class="text-center">
<a asp-controller="Home" asp-action="Index" asp-route-culture="@ViewContext.RouteData.Values["culture"]" class="btn btn-primary btn-lg">
@ViewBag.StartConverting
</a>
</div>
</div>
</div>
</div>
</div>
</div>

View File

@ -0,0 +1,36 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<data name="AboutTitle" xml:space="preserve">
<value>Acerca de Convert-It Online</value>
</data>
<data name="WhatIsTitle" xml:space="preserve">
<value>¿Qué es Convert-It Online?</value>
</data>
<data name="WhatIsContent" xml:space="preserve">
<value>Convert-It Online es una plataforma web gratuita que ofrece una amplia gama de herramientas de conversión para facilitar su trabajo diario. Nuestra misión es hacer que la conversión de archivos sea simple, rápida y accesible para todos.</value>
</data>
<data name="MissionTitle" xml:space="preserve">
<value>Nuestra Misión</value>
</data>
<data name="MissionContent" xml:space="preserve">
<value>Democratizar el acceso a herramientas de conversión de alta calidad, ofreciendo una solución gratuita, segura y eficiente para usuarios en todo el mundo. Creemos que las herramientas útiles deben estar al alcance de todos.</value>
</data>
<data name="FeaturesTitle" xml:space="preserve">
<value>Nuestros Recursos</value>
</data>
<data name="Feature1" xml:space="preserve">
<value>Conversiones rápidas y de alta calidad</value>
</data>
<data name="Feature2" xml:space="preserve">
<value>Procesamiento seguro sin almacenamiento de archivos</value>
</data>
<data name="Feature3" xml:space="preserve">
<value>Interfaz intuitiva y fácil de usar</value>
</data>
<data name="Feature4" xml:space="preserve">
<value>Soporte para múltiples idiomas</value>
</data>
<data name="StartConverting" xml:space="preserve">
<value>Comenzar a Convertir</value>
</data>
</root>

View File

@ -0,0 +1,36 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<data name="AboutTitle" xml:space="preserve">
<value>Acerca de Convert-It Online</value>
</data>
<data name="WhatIsTitle" xml:space="preserve">
<value>¿Qué es Convert-It Online?</value>
</data>
<data name="WhatIsContent" xml:space="preserve">
<value>Convert-It Online es una plataforma web gratuita que ofrece una amplia gama de herramientas de conversión para facilitar su trabajo diario. Nuestra misión es hacer que la conversión de archivos sea simple, rápida y accesible para todos.</value>
</data>
<data name="MissionTitle" xml:space="preserve">
<value>Nuestra Misión</value>
</data>
<data name="MissionContent" xml:space="preserve">
<value>Democratizar el acceso a herramientas de conversión de alta calidad, ofreciendo una solución gratuita, segura y eficiente para usuarios en todo el mundo. Creemos que las herramientas útiles deben estar al alcance de todos.</value>
</data>
<data name="FeaturesTitle" xml:space="preserve">
<value>Nuestros Recursos</value>
</data>
<data name="Feature1" xml:space="preserve">
<value>Conversiones rápidas y de alta calidad</value>
</data>
<data name="Feature2" xml:space="preserve">
<value>Procesamiento seguro sin almacenamiento de archivos</value>
</data>
<data name="Feature3" xml:space="preserve">
<value>Interfaz intuitiva y fácil de usar</value>
</data>
<data name="Feature4" xml:space="preserve">
<value>Soporte para múltiples idiomas</value>
</data>
<data name="StartConverting" xml:space="preserve">
<value>Comenzar a Convertir</value>
</data>
</root>

View File

@ -0,0 +1,36 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<data name="AboutTitle" xml:space="preserve">
<value>Acerca de Convert-It Online</value>
</data>
<data name="WhatIsTitle" xml:space="preserve">
<value>¿Qué es Convert-It Online?</value>
</data>
<data name="WhatIsContent" xml:space="preserve">
<value>Convert-It Online es una plataforma web gratuita que ofrece una amplia gama de herramientas de conversión para facilitar su trabajo diario. Nuestra misión es hacer que la conversión de archivos sea simple, rápida y accesible para todos.</value>
</data>
<data name="MissionTitle" xml:space="preserve">
<value>Nuestra Misión</value>
</data>
<data name="MissionContent" xml:space="preserve">
<value>Democratizar el acceso a herramientas de conversión de alta calidad, ofreciendo una solución gratuita, segura y eficiente para usuarios en todo el mundo. Creemos que las herramientas útiles deben estar al alcance de todos.</value>
</data>
<data name="FeaturesTitle" xml:space="preserve">
<value>Nuestros Recursos</value>
</data>
<data name="Feature1" xml:space="preserve">
<value>Conversiones rápidas y de alta calidad</value>
</data>
<data name="Feature2" xml:space="preserve">
<value>Procesamiento seguro sin almacenamiento de archivos</value>
</data>
<data name="Feature3" xml:space="preserve">
<value>Interfaz intuitiva y fácil de usar</value>
</data>
<data name="Feature4" xml:space="preserve">
<value>Soporte para múltiples idiomas</value>
</data>
<data name="StartConverting" xml:space="preserve">
<value>Comenzar a Convertir</value>
</data>
</root>

View File

@ -0,0 +1,36 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<data name="AboutTitle" xml:space="preserve">
<value>Sobre o Convert-It Online</value>
</data>
<data name="WhatIsTitle" xml:space="preserve">
<value>O que é o Convert-It Online?</value>
</data>
<data name="WhatIsContent" xml:space="preserve">
<value>Convert-It Online é uma plataforma web gratuita que oferece uma ampla gama de ferramentas de conversão para facilitar seu trabalho diário. Nossa missão é tornar a conversão de arquivos simples, rápida e acessível para todos.</value>
</data>
<data name="MissionTitle" xml:space="preserve">
<value>Nossa Missão</value>
</data>
<data name="MissionContent" xml:space="preserve">
<value>Democratizar o acesso a ferramentas de conversão de alta qualidade, oferecendo uma solução gratuita, segura e eficiente para usuários em todo o mundo. Acreditamos que ferramentas úteis devem estar ao alcance de todos.</value>
</data>
<data name="FeaturesTitle" xml:space="preserve">
<value>Nossos Recursos</value>
</data>
<data name="Feature1" xml:space="preserve">
<value>Conversões rápidas e de alta qualidade</value>
</data>
<data name="Feature2" xml:space="preserve">
<value>Processamento seguro sem armazenamento de arquivos</value>
</data>
<data name="Feature3" xml:space="preserve">
<value>Interface intuitiva e fácil de usar</value>
</data>
<data name="Feature4" xml:space="preserve">
<value>Suporte a múltiplos idiomas</value>
</data>
<data name="StartConverting" xml:space="preserve">
<value>Começar a Converter</value>
</data>
</root>

68
Views/Home/Contact.cshtml Normal file
View File

@ -0,0 +1,68 @@
@{
ViewData["Title"] = ViewBag.ContactTitle;
}
<div class="container">
<div class="row justify-content-center">
<div class="col-lg-8">
<div class="card shadow-custom">
<div class="card-body p-5">
<h1 class="display-5 mb-4 text-gradient">@ViewBag.ContactTitle</h1>
<div class="mb-4">
<p class="text-muted">@ViewBag.ContactIntro</p>
</div>
<div class="row">
<div class="col-md-6 mb-4">
<div class="text-center p-4 border rounded">
<i class="bi bi-envelope-fill text-primary fs-2 mb-3"></i>
<h3 class="h5">@ViewBag.EmailTitle</h3>
<p class="text-muted mb-0">contato@convert-it-online.com</p>
</div>
</div>
<div class="col-md-6 mb-4">
<div class="text-center p-4 border rounded">
<i class="bi bi-chat-dots-fill text-primary fs-2 mb-3"></i>
<h3 class="h5">@ViewBag.SupportTitle</h3>
<p class="text-muted mb-0">@ViewBag.SupportTime</p>
</div>
</div>
</div>
<div class="mb-4">
<h2 class="h4 text-primary mb-3">@ViewBag.FaqTitle</h2>
<div class="accordion" id="faqAccordion">
<div class="accordion-item">
<h3 class="accordion-header">
<button class="accordion-button collapsed" type="button" data-bs-toggle="collapse" data-bs-target="#faq1">
@Localizer["Faq1Question"]
</button>
</h3>
<div id="faq1" class="accordion-collapse collapse" data-bs-parent="#faqAccordion">
<div class="accordion-body">@Localizer["Faq1Answer"]</div>
</div>
</div>
<div class="accordion-item">
<h3 class="accordion-header">
<button class="accordion-button collapsed" type="button" data-bs-toggle="collapse" data-bs-target="#faq2">
@Localizer["Faq2Question"]
</button>
</h3>
<div id="faq2" class="accordion-collapse collapse" data-bs-parent="#faqAccordion">
<div class="accordion-body">@Localizer["Faq2Answer"]</div>
</div>
</div>
</div>
</div>
<div class="text-center">
<a asp-controller="Home" asp-action="Index" asp-route-culture="@ViewContext.RouteData.Values["culture"]" class="btn btn-primary">
@Localizer["BackToHome"]
</a>
</div>
</div>
</div>
</div>
</div>
</div>

View File

@ -0,0 +1,36 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<data name="ContactTitle" xml:space="preserve">
<value>Contáctanos</value>
</data>
<data name="ContactIntro" xml:space="preserve">
<value>¿Tienes alguna pregunta, sugerencia o encontraste algún problema? ¡Estamos aquí para ayudar! Contáctanos a través de los canales a continuación.</value>
</data>
<data name="EmailTitle" xml:space="preserve">
<value>Email</value>
</data>
<data name="SupportTitle" xml:space="preserve">
<value>Soporte</value>
</data>
<data name="SupportTime" xml:space="preserve">
<value>24 horas al día, 7 días a la semana</value>
</data>
<data name="FaqTitle" xml:space="preserve">
<value>Preguntas Frecuentes</value>
</data>
<data name="Faq1Question" xml:space="preserve">
<value>¿Los convertidores son realmente gratuitos?</value>
</data>
<data name="Faq1Answer" xml:space="preserve">
<value>¡Sí! Todos nuestros convertidores son 100% gratuitos. No cobramos ninguna tarifa y puedes usarlos cuantas veces quieras.</value>
</data>
<data name="Faq2Question" xml:space="preserve">
<value>¿Mis archivos quedan almacenados en el servidor?</value>
</data>
<data name="Faq2Answer" xml:space="preserve">
<value>No. Tus archivos se procesan e inmediatamente se eliminan de nuestros servidores. Priorizamos tu privacidad y seguridad.</value>
</data>
<data name="BackToHome" xml:space="preserve">
<value>Volver al Inicio</value>
</data>
</root>

View File

@ -0,0 +1,36 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<data name="ContactTitle" xml:space="preserve">
<value>Contáctanos</value>
</data>
<data name="ContactIntro" xml:space="preserve">
<value>¿Tienes alguna pregunta, sugerencia o encontraste algún problema? ¡Estamos aquí para ayudar! Contáctanos a través de los canales a continuación.</value>
</data>
<data name="EmailTitle" xml:space="preserve">
<value>Email</value>
</data>
<data name="SupportTitle" xml:space="preserve">
<value>Soporte</value>
</data>
<data name="SupportTime" xml:space="preserve">
<value>24 horas al día, 7 días a la semana</value>
</data>
<data name="FaqTitle" xml:space="preserve">
<value>Preguntas Frecuentes</value>
</data>
<data name="Faq1Question" xml:space="preserve">
<value>¿Los convertidores son realmente gratuitos?</value>
</data>
<data name="Faq1Answer" xml:space="preserve">
<value>¡Sí! Todos nuestros convertidores son 100% gratuitos. No cobramos ninguna tarifa y puedes usarlos cuantas veces quieras.</value>
</data>
<data name="Faq2Question" xml:space="preserve">
<value>¿Mis archivos quedan almacenados en el servidor?</value>
</data>
<data name="Faq2Answer" xml:space="preserve">
<value>No. Tus archivos se procesan e inmediatamente se eliminan de nuestros servidores. Priorizamos tu privacidad y seguridad.</value>
</data>
<data name="BackToHome" xml:space="preserve">
<value>Volver al Inicio</value>
</data>
</root>

View File

@ -0,0 +1,36 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<data name="ContactTitle" xml:space="preserve">
<value>Contáctanos</value>
</data>
<data name="ContactIntro" xml:space="preserve">
<value>¿Tienes alguna pregunta, sugerencia o encontraste algún problema? ¡Estamos aquí para ayudar! Contáctanos a través de los canales a continuación.</value>
</data>
<data name="EmailTitle" xml:space="preserve">
<value>Email</value>
</data>
<data name="SupportTitle" xml:space="preserve">
<value>Soporte</value>
</data>
<data name="SupportTime" xml:space="preserve">
<value>24 horas al día, 7 días a la semana</value>
</data>
<data name="FaqTitle" xml:space="preserve">
<value>Preguntas Frecuentes</value>
</data>
<data name="Faq1Question" xml:space="preserve">
<value>¿Los convertidores son realmente gratuitos?</value>
</data>
<data name="Faq1Answer" xml:space="preserve">
<value>¡Sí! Todos nuestros convertidores son 100% gratuitos. No cobramos ninguna tarifa y puedes usarlos cuantas veces quieras.</value>
</data>
<data name="Faq2Question" xml:space="preserve">
<value>¿Mis archivos quedan almacenados en el servidor?</value>
</data>
<data name="Faq2Answer" xml:space="preserve">
<value>No. Tus archivos se procesan e inmediatamente se eliminan de nuestros servidores. Priorizamos tu privacidad y seguridad.</value>
</data>
<data name="BackToHome" xml:space="preserve">
<value>Volver al Inicio</value>
</data>
</root>

View File

@ -0,0 +1,36 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<data name="ContactTitle" xml:space="preserve">
<value>Entre em Contato</value>
</data>
<data name="ContactIntro" xml:space="preserve">
<value>Tem alguma dúvida, sugestão ou encontrou algum problema? Estamos aqui para ajudar! Entre em contato conosco através dos canais abaixo.</value>
</data>
<data name="EmailTitle" xml:space="preserve">
<value>Email</value>
</data>
<data name="SupportTitle" xml:space="preserve">
<value>Suporte</value>
</data>
<data name="SupportTime" xml:space="preserve">
<value>24 horas por dia, 7 dias por semana</value>
</data>
<data name="FaqTitle" xml:space="preserve">
<value>Perguntas Frequentes</value>
</data>
<data name="Faq1Question" xml:space="preserve">
<value>Os conversores são realmente gratuitos?</value>
</data>
<data name="Faq1Answer" xml:space="preserve">
<value>Sim! Todos os nossos conversores são 100% gratuitos. Não cobramos nenhuma taxa e você pode usar quantas vezes quiser.</value>
</data>
<data name="Faq2Question" xml:space="preserve">
<value>Meus arquivos ficam armazenados no servidor?</value>
</data>
<data name="Faq2Answer" xml:space="preserve">
<value>Não. Seus arquivos são processados e imediatamente excluídos de nossos servidores. Priorizamos sua privacidade e segurança.</value>
</data>
<data name="BackToHome" xml:space="preserve">
<value>Voltar ao Início</value>
</data>
</root>

View File

@ -1,39 +1,83 @@
@using Microsoft.AspNetCore.Mvc.Localization
@inject IViewLocalizer Localizer
@model List<Convert_It_Online.Controllers.ToolViewModel>
@{
ViewData["Title"] = Localizer["PageTitle"];
ViewData["Title"] = ViewBag.PageTitle;
}
<div class="text-center mb-5">
<h1 class="display-4">@Localizer["PageTitle"]</h1>
<p class="lead text-muted">@Localizer["Subtitle"]</p>
<h1 class="display-4">@ViewBag.PageTitle</h1>
<p class="lead text-muted">@ViewBag.Subtitle</p>
</div>
<div class="row row-cols-1 row-cols-md-2 g-4">
<div class="row mb-5">
<div class="col-12">
<h3 class="h4 mb-3 text-center">@ViewBag.ChooseConverter</h3>
<div class="converter-menu-container">
<div class="converter-menu">
@foreach (var tool in Model)
{
<div class="col">
@* A tag de link envolve todo o card e usa os Tag Helpers para a rota *@
<a asp-area="@tool.Area"
asp-controller="@tool.Controller"
asp-action="@tool.Action"
asp-route-culture="@ViewContext.RouteData.Values["culture"]"
class="text-decoration-none">
<div class="card h-100 text-center border-secondary">
<div class="card-body p-4">
<div class="feature-icon-1 bg-primary bg-gradient text-white fs-1 rounded-3 mb-4 mt-n4">
class="converter-item">
<div class="converter-icon">
<i class="@tool.IconClass"></i>
</div>
<h2 class="fs-4 fw-bold">@Localizer[tool.TitleKey]</h2>
<p class="mb-0 text-muted">@Localizer[tool.DescriptionKey]</p>
<div class="converter-content">
<h4>@(tool.TitleKey == "TextToolsTitle" ? ViewBag.TextToolsTitle : ViewBag.ImageToolsTitle)</h4>
<p>@(tool.DescriptionKey == "TextToolsDescription" ? ViewBag.TextToolsDescription : ViewBag.ImageToolsDescription)</p>
</div>
<div class="converter-arrow">
<i class="bi bi-chevron-right"></i>
</div>
</a>
</div>
}
</div>
</div>
</div>
</div>
<div class="row">
<div class="col-lg-8 mx-auto">
<div class="accordion" id="aboutAccordion">
<div class="accordion-item">
<h2 class="accordion-header" id="headingOne">
<button class="accordion-button collapsed" type="button" data-bs-toggle="collapse" data-bs-target="#collapseOne" aria-expanded="false" aria-controls="collapseOne">
@ViewBag.AboutSiteTitle
</button>
</h2>
<div id="collapseOne" class="accordion-collapse collapse" aria-labelledby="headingOne" data-bs-parent="#aboutAccordion">
<div class="accordion-body">
@ViewBag.AboutSiteContent
</div>
</div>
</div>
<div class="accordion-item">
<h2 class="accordion-header" id="headingTwo">
<button class="accordion-button collapsed" type="button" data-bs-toggle="collapse" data-bs-target="#collapseTwo" aria-expanded="false" aria-controls="collapseTwo">
@ViewBag.WhyFreeTitle
</button>
</h2>
<div id="collapseTwo" class="accordion-collapse collapse" aria-labelledby="headingTwo" data-bs-parent="#aboutAccordion">
<div class="accordion-body">
@ViewBag.WhyFreeContent
</div>
</div>
</div>
<div class="accordion-item">
<h2 class="accordion-header" id="headingThree">
<button class="accordion-button collapsed" type="button" data-bs-toggle="collapse" data-bs-target="#collapseThree" aria-expanded="false" aria-controls="collapseThree">
@ViewBag.SecurityTitle
</button>
</h2>
<div id="collapseThree" class="accordion-collapse collapse" aria-labelledby="headingThree" data-bs-parent="#aboutAccordion">
<div class="accordion-body">
@ViewBag.SecurityContent
</div>
</div>
</div>
</div>
</div>
</div>

View File

@ -1,10 +1,10 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<data name="PageTitle" xml:space="preserve">
<value>Tus Herramientas de Conversión</value>
<value>Convertidores Online Gratuitos</value>
</data>
<data name="Subtitle" xml:space="preserve">
<value>Soluciones rápidas y fáciles para tu día a día</value>
<value>Convierte textos, imágenes y documentos gratis. Herramientas online rápidas y seguras, sin necesidad de instalación.</value>
</data>
<data name="TextToolsTitle" xml:space="preserve">
<value>Herramientas de Texto</value>
@ -18,4 +18,25 @@
<data name="ImageToolsDescription" xml:space="preserve">
<value>Optimiza y convierte imágenes a cualquier formato.</value>
</data>
<data name="AboutSiteTitle" xml:space="preserve">
<value>Acerca de Convert-It Online</value>
</data>
<data name="AboutSiteContent" xml:space="preserve">
<value>Convert-It Online es una plataforma gratuita que ofrece diversas herramientas de conversión para facilitar tu trabajo diario. Todas las conversiones se realizan de forma segura, sin almacenamiento de tus archivos en nuestros servidores.</value>
</data>
<data name="WhyFreeTitle" xml:space="preserve">
<value>¿Por qué es gratuito?</value>
</data>
<data name="WhyFreeContent" xml:space="preserve">
<value>Creemos que las herramientas útiles deben ser accesibles para todos. Nuestro sitio se mantiene a través de anuncios no intrusivos, permitiéndote usar todos los convertidores sin costo alguno.</value>
</data>
<data name="SecurityTitle" xml:space="preserve">
<value>Seguridad y privacidad</value>
</data>
<data name="SecurityContent" xml:space="preserve">
<value>Tus archivos se procesan localmente en tu navegador siempre que sea posible. Para conversiones que requieren procesamiento en el servidor, los archivos se eliminan automáticamente después de la conversión.</value>
</data>
<data name="ChooseConverter" xml:space="preserve">
<value>Elige tu Convertidor</value>
</data>
</root>

View File

@ -1,10 +1,10 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<data name="PageTitle" xml:space="preserve">
<value>Sus Herramientas de Conversión</value>
<value>Convertidores Online Gratuitos</value>
</data>
<data name="Subtitle" xml:space="preserve">
<value>Soluciones rápidas y fáciles para su día a día</value>
<value>Convierte textos, imágenes y documentos gratis. Herramientas online rápidas y seguras, sin necesidad de instalación.</value>
</data>
<data name="TextToolsTitle" xml:space="preserve">
<value>Herramientas de Texto</value>
@ -18,4 +18,25 @@
<data name="ImageToolsDescription" xml:space="preserve">
<value>Optimice y convierta imágenes para cualquier formato.</value>
</data>
<data name="AboutSiteTitle" xml:space="preserve">
<value>Acerca de Convert-It Online</value>
</data>
<data name="AboutSiteContent" xml:space="preserve">
<value>Convert-It Online es una plataforma gratuita que ofrece diversas herramientas de conversión para facilitar su trabajo diario. Todas las conversiones se realizan de forma segura, sin almacenamiento de sus archivos en nuestros servidores.</value>
</data>
<data name="WhyFreeTitle" xml:space="preserve">
<value>¿Por qué es gratuito?</value>
</data>
<data name="WhyFreeContent" xml:space="preserve">
<value>Creemos que las herramientas útiles deben ser accesibles para todos. Nuestro sitio se mantiene a través de anuncios no intrusivos, permitiéndole usar todos los convertidores sin costo alguno.</value>
</data>
<data name="SecurityTitle" xml:space="preserve">
<value>Seguridad y privacidad</value>
</data>
<data name="SecurityContent" xml:space="preserve">
<value>Sus archivos se procesan localmente en su navegador siempre que sea posible. Para conversiones que requieren procesamiento en el servidor, los archivos se eliminan automáticamente después de la conversión.</value>
</data>
<data name="ChooseConverter" xml:space="preserve">
<value>Elige tu Convertidor</value>
</data>
</root>

View File

@ -1,10 +1,10 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<data name="PageTitle" xml:space="preserve">
<value>Tus Herramientas de Conversión</value>
<value>Convertidores Online Gratuitos</value>
</data>
<data name="Subtitle" xml:space="preserve">
<value>Soluciones rápidas y fáciles para tu día a día</value>
<value>Convierte textos, imágenes y documentos gratis. Herramientas online rápidas y seguras, sin necesidad de instalación.</value>
</data>
<data name="TextToolsTitle" xml:space="preserve">
<value>Herramientas de Texto</value>
@ -18,4 +18,25 @@
<data name="ImageToolsDescription" xml:space="preserve">
<value>Optimiza y convierte imágenes a cualquier formato.</value>
</data>
<data name="AboutSiteTitle" xml:space="preserve">
<value>Acerca de Convert-It Online</value>
</data>
<data name="AboutSiteContent" xml:space="preserve">
<value>Convert-It Online es una plataforma gratuita que ofrece diversas herramientas de conversión para facilitar tu trabajo diario. Todas las conversiones se realizan de forma segura, sin almacenamiento de tus archivos en nuestros servidores.</value>
</data>
<data name="WhyFreeTitle" xml:space="preserve">
<value>¿Por qué es gratuito?</value>
</data>
<data name="WhyFreeContent" xml:space="preserve">
<value>Creemos que las herramientas útiles deben ser accesibles para todos. Nuestro sitio se mantiene a través de anuncios no intrusivos, permitiéndote usar todos los convertidores sin costo alguno.</value>
</data>
<data name="SecurityTitle" xml:space="preserve">
<value>Seguridad y privacidad</value>
</data>
<data name="SecurityContent" xml:space="preserve">
<value>Tus archivos se procesan localmente en tu navegador siempre que sea posible. Para conversiones que requieren procesamiento en el servidor, los archivos se eliminan automáticamente después de la conversión.</value>
</data>
<data name="ChooseConverter" xml:space="preserve">
<value>Elige tu Convertidor</value>
</data>
</root>

View File

@ -1,10 +1,10 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<data name="PageTitle" xml:space="preserve">
<value>Suas Ferramentas de Conversão</value>
<value>Conversores Online Gratuitos</value>
</data>
<data name="Subtitle" xml:space="preserve">
<value>Soluções rápidas e fáceis para o seu dia a dia</value>
<value>Converta textos, imagens e documentos gratuitamente. Ferramentas online rápidas e seguras, sem necessidade de instalação.</value>
</data>
<data name="TextToolsTitle" xml:space="preserve">
<value>Ferramentas de Texto</value>
@ -18,4 +18,25 @@
<data name="ImageToolsDescription" xml:space="preserve">
<value>Otimize e converta imagens para qualquer formato.</value>
</data>
<data name="AboutSiteTitle" xml:space="preserve">
<value>Sobre o Convert-It Online</value>
</data>
<data name="AboutSiteContent" xml:space="preserve">
<value>Convert-It Online é uma plataforma gratuita que oferece diversas ferramentas de conversão para facilitar seu trabalho diário. Todas as conversões são realizadas de forma segura, sem armazenamento de seus arquivos em nossos servidores.</value>
</data>
<data name="WhyFreeTitle" xml:space="preserve">
<value>Por que é gratuito?</value>
</data>
<data name="WhyFreeContent" xml:space="preserve">
<value>Acreditamos que ferramentas úteis devem ser acessíveis a todos. Nosso site é mantido através de anúncios não intrusivos, permitindo que você use todos os conversores sem custo algum.</value>
</data>
<data name="SecurityTitle" xml:space="preserve">
<value>Segurança e privacidade</value>
</data>
<data name="SecurityContent" xml:space="preserve">
<value>Seus arquivos são processados localmente no seu navegador sempre que possível. Para conversões que requerem processamento no servidor, os arquivos são automaticamente excluídos após a conversão.</value>
</data>
<data name="ChooseConverter" xml:space="preserve">
<value>Escolha seu Conversor</value>
</data>
</root>

55
Views/Home/Terms.cshtml Normal file
View File

@ -0,0 +1,55 @@
@{
ViewData["Title"] = ViewBag.TermsTitle;
}
<div class="container">
<div class="row justify-content-center">
<div class="col-lg-8">
<div class="card shadow-custom">
<div class="card-body p-5">
<h1 class="display-5 mb-4 text-gradient">@ViewBag.TermsTitle</h1>
<div class="mb-4">
<p class="text-muted">@ViewBag.TermsIntro</p>
</div>
<div class="mb-4">
<h2 class="h4 text-primary mb-3">@ViewBag.AcceptanceTitle</h2>
<p class="text-muted">@ViewBag.AcceptanceContent</p>
</div>
<div class="mb-4">
<h2 class="h4 text-primary mb-3">@ViewBag.ServiceTitle</h2>
<p class="text-muted">@ViewBag.ServiceContent</p>
</div>
<div class="mb-4">
<h2 class="h4 text-primary mb-3">@ViewBag.PrivacyTitle</h2>
<p class="text-muted">@ViewBag.PrivacyContent</p>
</div>
<div class="mb-4">
<h2 class="h4 text-primary mb-3">@ViewBag.LimitationTitle</h2>
<p class="text-muted">@ViewBag.LimitationContent</p>
</div>
<div class="mb-4">
<h2 class="h4 text-primary mb-3">@ViewBag.ChangesTitle</h2>
<p class="text-muted">@ViewBag.ChangesContent</p>
</div>
<div class="alert alert-info">
<i class="bi bi-info-circle me-2"></i>
<strong>@ViewBag.LastUpdated:</strong> Janeiro 2025
</div>
<div class="text-center">
<a asp-controller="Home" asp-action="Index" asp-route-culture="@ViewContext.RouteData.Values["culture"]" class="btn btn-primary">
@ViewBag.BackToHome
</a>
</div>
</div>
</div>
</div>
</div>
</div>

View File

@ -0,0 +1,45 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<data name="TermsTitle" xml:space="preserve">
<value>Términos de Uso</value>
</data>
<data name="TermsIntro" xml:space="preserve">
<value>Estos Términos de Uso regulan el uso del sitio Convert-It Online. Al utilizar nuestros servicios, usted acepta los términos aquí establecidos.</value>
</data>
<data name="AcceptanceTitle" xml:space="preserve">
<value>1. Aceptación de los Términos</value>
</data>
<data name="AcceptanceContent" xml:space="preserve">
<value>Al acceder y usar Convert-It Online, usted acepta y acepta estar sujeto a los términos y condiciones de este acuerdo. Si no está de acuerdo con cualquier parte de estos términos, no debe usar nuestro servicio.</value>
</data>
<data name="ServiceTitle" xml:space="preserve">
<value>2. Descripción del Servicio</value>
</data>
<data name="ServiceContent" xml:space="preserve">
<value>Convert-It Online proporciona herramientas gratuitas de conversión de archivos en línea. Nuestros servicios incluyen conversión de textos, imágenes y otros tipos de archivos, sujetos a disponibilidad y limitaciones técnicas.</value>
</data>
<data name="PrivacyTitle" xml:space="preserve">
<value>3. Privacidad y Seguridad</value>
</data>
<data name="PrivacyContent" xml:space="preserve">
<value>Respetamos su privacidad. Los archivos subidos para conversión se procesan temporalmente y se eliminan automáticamente después del procesamiento. No almacenamos, compartimos o analizamos el contenido de sus archivos.</value>
</data>
<data name="LimitationTitle" xml:space="preserve">
<value>4. Limitación de Responsabilidad</value>
</data>
<data name="LimitationContent" xml:space="preserve">
<value>Convert-It Online se proporciona "tal como está". No garantizamos que el servicio será ininterrumpido, seguro o libre de errores. No nos hacemos responsables de cualquier pérdida de datos o daños resultantes del uso de nuestros servicios.</value>
</data>
<data name="ChangesTitle" xml:space="preserve">
<value>5. Modificaciones a los Términos</value>
</data>
<data name="ChangesContent" xml:space="preserve">
<value>Nos reservamos el derecho de modificar estos términos en cualquier momento. Los cambios entrarán en vigor inmediatamente después de la publicación en el sitio. Es su responsabilidad revisar periódicamente estos términos.</value>
</data>
<data name="LastUpdated" xml:space="preserve">
<value>Última actualización</value>
</data>
<data name="BackToHome" xml:space="preserve">
<value>Volver al Inicio</value>
</data>
</root>

View File

@ -0,0 +1,45 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<data name="TermsTitle" xml:space="preserve">
<value>Términos de Uso</value>
</data>
<data name="TermsIntro" xml:space="preserve">
<value>Estos Términos de Uso regulan el uso del sitio Convert-It Online. Al utilizar nuestros servicios, usted acepta los términos aquí establecidos.</value>
</data>
<data name="AcceptanceTitle" xml:space="preserve">
<value>1. Aceptación de los Términos</value>
</data>
<data name="AcceptanceContent" xml:space="preserve">
<value>Al acceder y usar Convert-It Online, usted acepta y acepta estar sujeto a los términos y condiciones de este acuerdo. Si no está de acuerdo con cualquier parte de estos términos, no debe usar nuestro servicio.</value>
</data>
<data name="ServiceTitle" xml:space="preserve">
<value>2. Descripción del Servicio</value>
</data>
<data name="ServiceContent" xml:space="preserve">
<value>Convert-It Online proporciona herramientas gratuitas de conversión de archivos en línea. Nuestros servicios incluyen conversión de textos, imágenes y otros tipos de archivos, sujetos a disponibilidad y limitaciones técnicas.</value>
</data>
<data name="PrivacyTitle" xml:space="preserve">
<value>3. Privacidad y Seguridad</value>
</data>
<data name="PrivacyContent" xml:space="preserve">
<value>Respetamos su privacidad. Los archivos subidos para conversión se procesan temporalmente y se eliminan automáticamente después del procesamiento. No almacenamos, compartimos o analizamos el contenido de sus archivos.</value>
</data>
<data name="LimitationTitle" xml:space="preserve">
<value>4. Limitación de Responsabilidad</value>
</data>
<data name="LimitationContent" xml:space="preserve">
<value>Convert-It Online se proporciona "tal como está". No garantizamos que el servicio será ininterrumpido, seguro o libre de errores. No nos hacemos responsables de cualquier pérdida de datos o daños resultantes del uso de nuestros servicios.</value>
</data>
<data name="ChangesTitle" xml:space="preserve">
<value>5. Modificaciones a los Términos</value>
</data>
<data name="ChangesContent" xml:space="preserve">
<value>Nos reservamos el derecho de modificar estos términos en cualquier momento. Los cambios entrarán en vigor inmediatamente después de la publicación en el sitio. Es su responsabilidad revisar periódicamente estos términos.</value>
</data>
<data name="LastUpdated" xml:space="preserve">
<value>Última actualización</value>
</data>
<data name="BackToHome" xml:space="preserve">
<value>Volver al Inicio</value>
</data>
</root>

View File

@ -0,0 +1,45 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<data name="TermsTitle" xml:space="preserve">
<value>Términos de Uso</value>
</data>
<data name="TermsIntro" xml:space="preserve">
<value>Estos Términos de Uso regulan el uso del sitio Convert-It Online. Al utilizar nuestros servicios, usted acepta los términos aquí establecidos.</value>
</data>
<data name="AcceptanceTitle" xml:space="preserve">
<value>1. Aceptación de los Términos</value>
</data>
<data name="AcceptanceContent" xml:space="preserve">
<value>Al acceder y usar Convert-It Online, usted acepta y acepta estar sujeto a los términos y condiciones de este acuerdo. Si no está de acuerdo con cualquier parte de estos términos, no debe usar nuestro servicio.</value>
</data>
<data name="ServiceTitle" xml:space="preserve">
<value>2. Descripción del Servicio</value>
</data>
<data name="ServiceContent" xml:space="preserve">
<value>Convert-It Online proporciona herramientas gratuitas de conversión de archivos en línea. Nuestros servicios incluyen conversión de textos, imágenes y otros tipos de archivos, sujetos a disponibilidad y limitaciones técnicas.</value>
</data>
<data name="PrivacyTitle" xml:space="preserve">
<value>3. Privacidad y Seguridad</value>
</data>
<data name="PrivacyContent" xml:space="preserve">
<value>Respetamos su privacidad. Los archivos subidos para conversión se procesan temporalmente y se eliminan automáticamente después del procesamiento. No almacenamos, compartimos o analizamos el contenido de sus archivos.</value>
</data>
<data name="LimitationTitle" xml:space="preserve">
<value>4. Limitación de Responsabilidad</value>
</data>
<data name="LimitationContent" xml:space="preserve">
<value>Convert-It Online se proporciona "tal como está". No garantizamos que el servicio será ininterrumpido, seguro o libre de errores. No nos hacemos responsables de cualquier pérdida de datos o daños resultantes del uso de nuestros servicios.</value>
</data>
<data name="ChangesTitle" xml:space="preserve">
<value>5. Modificaciones a los Términos</value>
</data>
<data name="ChangesContent" xml:space="preserve">
<value>Nos reservamos el derecho de modificar estos términos en cualquier momento. Los cambios entrarán en vigor inmediatamente después de la publicación en el sitio. Es su responsabilidad revisar periódicamente estos términos.</value>
</data>
<data name="LastUpdated" xml:space="preserve">
<value>Última actualización</value>
</data>
<data name="BackToHome" xml:space="preserve">
<value>Volver al Inicio</value>
</data>
</root>

View File

@ -0,0 +1,45 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<data name="TermsTitle" xml:space="preserve">
<value>Termos de Uso</value>
</data>
<data name="TermsIntro" xml:space="preserve">
<value>Estes Termos de Uso regulam o uso do site Convert-It Online. Ao utilizar nossos serviços, você concorda com os termos aqui estabelecidos.</value>
</data>
<data name="AcceptanceTitle" xml:space="preserve">
<value>1. Aceitação dos Termos</value>
</data>
<data name="AcceptanceContent" xml:space="preserve">
<value>Ao acessar e usar o Convert-It Online, você aceita e concorda em ficar vinculado aos termos e condições deste acordo. Se você não concordar com qualquer parte destes termos, não deverá usar nosso serviço.</value>
</data>
<data name="ServiceTitle" xml:space="preserve">
<value>2. Descrição do Serviço</value>
</data>
<data name="ServiceContent" xml:space="preserve">
<value>O Convert-It Online fornece ferramentas gratuitas de conversão de arquivos online. Nossos serviços incluem conversão de textos, imagens e outros tipos de arquivos, sujeitos à disponibilidade e limitações técnicas.</value>
</data>
<data name="PrivacyTitle" xml:space="preserve">
<value>3. Privacidade e Segurança</value>
</data>
<data name="PrivacyContent" xml:space="preserve">
<value>Respeitamos sua privacidade. Os arquivos enviados para conversão são processados temporariamente e excluídos automaticamente após o processamento. Não armazenamos, compartilhamos ou analisamos o conteúdo de seus arquivos.</value>
</data>
<data name="LimitationTitle" xml:space="preserve">
<value>4. Limitação de Responsabilidade</value>
</data>
<data name="LimitationContent" xml:space="preserve">
<value>O Convert-It Online é fornecido "como está". Não garantimos que o serviço será ininterrupto, seguro ou livre de erros. Não nos responsabilizamos por qualquer perda de dados ou danos resultantes do uso de nossos serviços.</value>
</data>
<data name="ChangesTitle" xml:space="preserve">
<value>5. Modificações nos Termos</value>
</data>
<data name="ChangesContent" xml:space="preserve">
<value>Reservamo-nos o direito de modificar estes termos a qualquer momento. As alterações entrarão em vigor imediatamente após a publicação no site. É sua responsabilidade revisar periodicamente estes termos.</value>
</data>
<data name="LastUpdated" xml:space="preserve">
<value>Última atualização</value>
</data>
<data name="BackToHome" xml:space="preserve">
<value>Voltar ao Início</value>
</data>
</root>

View File

@ -1,9 +1,7 @@
@using Microsoft.AspNetCore.Localization
@using Microsoft.Extensions.Options
@using Microsoft.AspNetCore.Mvc.Localization
@inject IOptions<RequestLocalizationOptions> LocOptions
@inject IViewLocalizer Localizer
@{
var requestCulture = Context.Features.Get<IRequestCultureFeature>();
@ -11,13 +9,13 @@
}
<!DOCTYPE html>
<html lang="@requestCulture?.RequestCulture.UICulture.Name" data-bs-theme="dark">
<html lang="@requestCulture?.RequestCulture.UICulture.Name" data-bs-theme="light">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>@ViewData["Title"] - Convert-It Online</title>
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootswatch@5.3.3/dist/cyborg/bootstrap.min.css" />
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/css/bootstrap.min.css" />
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap-icons@1.11.3/font/bootstrap-icons.min.css">
<link rel="stylesheet" href="~/css/site.css" />
</head>
@ -32,7 +30,27 @@
<div class="collapse navbar-collapse" id="navbarColor01">
<ul class="navbar-nav me-auto">
<li class="nav-item">
<a class="nav-link active" asp-area="" asp-controller="Home" asp-action="Index" asp-route-culture="@requestCulture?.RequestCulture.UICulture.Name">@Localizer["HomeLink"]</a>
<a class="nav-link" asp-area="" asp-controller="Home" asp-action="Index" asp-route-culture="@requestCulture?.RequestCulture.UICulture.Name">@ViewBag.HomeLink</a>
</li>
<li class="nav-item dropdown">
<a class="nav-link dropdown-toggle" href="#" id="textToolsDropdown" role="button" data-bs-toggle="dropdown" aria-expanded="false">
<i class="bi bi-fonts me-1"></i>@ViewBag.TextMenuTitle
</a>
<ul class="dropdown-menu" aria-labelledby="textToolsDropdown">
<li><a class="dropdown-item" asp-area="TextTools" asp-controller="CaseConverter" asp-action="Index" asp-route-culture="@requestCulture?.RequestCulture.UICulture.Name">
<i class="bi bi-type me-2"></i>@ViewBag.CaseConverterTitle
</a></li>
</ul>
</li>
<li class="nav-item dropdown">
<a class="nav-link dropdown-toggle" href="#" id="imageToolsDropdown" role="button" data-bs-toggle="dropdown" aria-expanded="false">
<i class="bi bi-image-alt me-1"></i>@ViewBag.ImageMenuTitle
</a>
<ul class="dropdown-menu" aria-labelledby="imageToolsDropdown">
<li><a class="dropdown-item" asp-area="ImageConverters" asp-controller="JpgToWebp" asp-action="Index" asp-route-culture="@requestCulture?.RequestCulture.UICulture.Name">
<i class="bi bi-arrow-left-right me-2"></i>@ViewBag.JpgToWebpTitle
</a></li>
</ul>
</li>
</ul>
<div class="dropdown">
@ -78,9 +96,18 @@
</div>
</div>
<footer class="footer mt-auto py-3 bg-dark">
<div class="container text-center">
<span class="text-muted">@Localizer["FooterText"]</span>
<footer class="footer mt-auto py-4">
<div class="container">
<div class="row">
<div class="col-md-6 text-center text-md-start">
<span class="text-muted">@ViewBag.FooterText</span>
</div>
<div class="col-md-6 text-center text-md-end">
<a asp-controller="Home" asp-action="About" asp-route-culture="@requestCulture?.RequestCulture.UICulture.Name" class="text-muted text-decoration-none me-3">@ViewBag.About</a>
<a asp-controller="Home" asp-action="Contact" asp-route-culture="@requestCulture?.RequestCulture.UICulture.Name" class="text-muted text-decoration-none me-3">@ViewBag.Contact</a>
<a asp-controller="Home" asp-action="Terms" asp-route-culture="@requestCulture?.RequestCulture.UICulture.Name" class="text-muted text-decoration-none">@ViewBag.Terms</a>
</div>
</div>
</div>
</footer>

View File

@ -1,9 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<data name="HomeLink" xml:space="preserve">
<value>Inicio</value>
</data>
<data name="FooterText" xml:space="preserve">
<value>© 2025 - Convert-It Online</value>
</data>
</root>

View File

@ -1,9 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<data name="HomeLink" xml:space="preserve">
<value>Inicio</value>
</data>
<data name="FooterText" xml:space="preserve">
<value>© 2025 - Convert-It Online</value>
</data>
</root>

View File

@ -1,9 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<data name="HomeLink" xml:space="preserve">
<value>Inicio</value>
</data>
<data name="FooterText" xml:space="preserve">
<value>© 2025 - Convert-It Online</value>
</data>
</root>

View File

@ -1,9 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<data name="HomeLink" xml:space="preserve">
<value>Início</value>
</data>
<data name="FooterText" xml:space="preserve">
<value>© 2025 - Convert-It Online</value>
</data>
</root>

View File

@ -1,213 +1,34 @@
/* ========== TEMA ESCURO PERSONALIZADO ========== */
/* ========== FORÇA TEMA CLARO - SOBREPÕE BOOTSTRAP ========== */
html, body {
background-color: #ffffff !important;
color: #212529 !important;
}
body {
--bs-body-bg: #ffffff !important;
--bs-body-color: #212529 !important;
--bs-text-muted: #6c757d !important;
background: #ffffff !important;
}
/* ========== VARIÁVEIS CUSTOMIZADAS ========== */
:root {
--primary-gradient: linear-gradient(135deg, #007bff 0%, #0056b3 100%);
--card-bg: rgba(255, 255, 255, 0.05);
--card-border: rgba(255, 255, 255, 0.1);
--text-shadow: 0 2px 4px rgba(0, 0, 0, 0.3);
--box-shadow: 0 8px 32px rgba(0, 123, 255, 0.1);
--primary-color: #0d6efd;
--primary-gradient: linear-gradient(135deg, #0d6efd 0%, #0a58ca 100%);
--secondary-color: #6c757d;
--success-color: #198754;
--light-color: #f8f9fa;
--dark-color: #212529;
--border-color: #dee2e6;
--text-color: #212529;
--text-muted: #6c757d;
--card-bg: #ffffff;
--body-bg: #ffffff;
--card-shadow: 0 0.125rem 0.25rem rgba(0, 0, 0, 0.075);
--card-shadow-hover: 0 0.5rem 1rem rgba(0, 0, 0, 0.15);
}
/* ========== LAYOUT PRINCIPAL ========== */
body {
background: linear-gradient(135deg, #0a1929 0%, #1a2332 100%);
min-height: 100vh;
font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;
}
.navbar {
background: var(--primary-gradient) !important;
backdrop-filter: blur(10px);
box-shadow: 0 4px 20px rgba(0, 123, 255, 0.2);
}
.navbar-brand {
font-weight: 700;
font-size: 1.5rem;
text-shadow: var(--text-shadow);
}
/* ========== CARDS MODERNOS ========== */
.card {
background: var(--card-bg);
backdrop-filter: blur(10px);
border: 1px solid var(--card-border);
box-shadow: var(--box-shadow);
transition: all 0.3s ease;
border-radius: 1rem;
}
.card:hover {
transform: translateY(-8px);
box-shadow: 0 12px 40px rgba(0, 123, 255, 0.25);
border-color: rgba(0, 123, 255, 0.3);
}
.card a {
color: inherit;
text-decoration: none;
}
.card a:hover {
color: inherit;
}
/* ========== ÍCONES DOS CARDS ========== */
.feature-icon-1 {
display: inline-flex;
align-items: center;
justify-content: center;
height: 4rem;
width: 4rem;
background: var(--primary-gradient) !important;
box-shadow: 0 8px 16px rgba(0, 123, 255, 0.3);
transition: all 0.3s ease;
position: relative;
overflow: hidden;
}
.feature-icon-1::before {
content: '';
position: absolute;
top: -50%;
left: -50%;
width: 200%;
height: 200%;
background: linear-gradient(45deg, transparent, rgba(255, 255, 255, 0.1), transparent);
transition: all 0.6s ease;
transform: rotate(45deg);
opacity: 0;
}
.card:hover .feature-icon-1::before {
opacity: 1;
animation: shimmer 1s ease-in-out;
}
@keyframes shimmer {
0% { transform: translateX(-100%) rotate(45deg); }
100% { transform: translateX(100%) rotate(45deg); }
}
/* ========== TÍTULOS E TEXTOS ========== */
.display-4 {
font-weight: 800;
background: var(--primary-gradient);
-webkit-background-clip: text;
-webkit-text-fill-color: transparent;
background-clip: text;
text-shadow: none;
margin-bottom: 1.5rem;
}
.lead {
font-size: 1.25rem;
opacity: 0.9;
}
.card h2 {
font-weight: 700;
margin-bottom: 1rem;
color: #ffffff;
}
.card p {
opacity: 0.85;
line-height: 1.6;
}
/* ========== DROPDOWN DE IDIOMAS ========== */
.dropdown-toggle {
background: rgba(255, 255, 255, 0.1) !important;
border: 1px solid rgba(255, 255, 255, 0.2) !important;
backdrop-filter: blur(10px);
transition: all 0.3s ease;
}
.dropdown-toggle:hover {
background: rgba(255, 255, 255, 0.2) !important;
transform: translateY(-2px);
box-shadow: 0 4px 12px rgba(0, 0, 0, 0.2);
}
.dropdown-menu {
background: rgba(33, 37, 41, 0.95) !important;
backdrop-filter: blur(20px);
border: 1px solid rgba(255, 255, 255, 0.1);
box-shadow: 0 8px 32px rgba(0, 0, 0, 0.3);
}
.dropdown-item {
transition: all 0.2s ease;
}
.dropdown-item:hover {
background: rgba(0, 123, 255, 0.2) !important;
color: #ffffff !important;
}
/* ========== FOOTER ========== */
.footer {
background: linear-gradient(135deg, #1a1a1a 0%, #2a2a2a 100%) !important;
border-top: 1px solid rgba(255, 255, 255, 0.1);
backdrop-filter: blur(10px);
}
/* ========== PLACEHOLDERS DE ANÚNCIO ========== */
.ad-placeholder {
background: rgba(255, 255, 255, 0.05);
border: 2px dashed rgba(255, 255, 255, 0.1);
border-radius: 1rem;
display: flex;
align-items: center;
justify-content: center;
text-align: center;
color: rgba(255, 255, 255, 0.5);
font-size: 1rem;
backdrop-filter: blur(5px);
transition: all 0.3s ease;
}
.ad-placeholder:hover {
border-color: rgba(0, 123, 255, 0.3);
background: rgba(255, 255, 255, 0.08);
}
.ad-top {
min-height: 90px;
margin-bottom: 2rem;
}
.ad-side {
min-height: 600px;
position: sticky;
top: 2rem;
}
/* ========== RESPONSIVIDADE ========== */
@media (max-width: 768px) {
.display-4 {
font-size: 2.5rem;
}
.lead {
font-size: 1.1rem;
}
.card {
margin-bottom: 1.5rem;
}
.feature-icon-1 {
height: 3rem;
width: 3rem;
}
}
/* ========== ANIMAÇÕES SUAVES ========== */
* {
transition: color 0.2s ease, background-color 0.2s ease, border-color 0.2s ease;
}
.container {
animation: fadeInUp 0.6s ease-out;
}
@ -222,3 +43,391 @@ body {
transform: translateY(0);
}
}
/* ========== NAVBAR ========== */
.navbar-brand {
font-weight: 700;
font-size: 1.5rem;
color: white !important;
}
.navbar-nav .nav-link {
color: rgba(255, 255, 255, 0.9) !important;
}
.navbar-nav .nav-link:hover {
color: white !important;
}
/* ========== TÍTULOS E TEXTOS ========== */
.display-4 {
font-weight: 800;
background: var(--primary-gradient);
-webkit-background-clip: text;
-webkit-text-fill-color: transparent;
background-clip: text;
margin-bottom: 1.5rem;
font-size: 2.5rem;
}
.lead {
font-size: 1.1rem;
color: var(--text-muted) !important;
font-weight: 400;
line-height: 1.7;
}
.text-muted {
color: var(--text-muted) !important;
}
.text-primary {
color: var(--primary-color) !important;
}
/* ========== MENU DE CONVERSORES ========== */
.converter-menu-container {
background: var(--card-bg) !important;
border: 1px solid var(--border-color);
border-radius: 1rem;
box-shadow: var(--card-shadow);
overflow: hidden;
max-height: 400px;
margin-bottom: 2rem;
}
.converter-menu {
max-height: 400px;
overflow-y: auto;
padding: 0;
}
.converter-item {
display: flex;
align-items: center;
padding: 1rem 1.5rem;
text-decoration: none;
color: var(--text-color) !important;
border-bottom: 1px solid var(--border-color);
transition: all 0.3s ease;
position: relative;
background-color: var(--card-bg) !important;
}
.converter-item:last-child {
border-bottom: none;
}
.converter-item:hover {
background-color: var(--light-color) !important;
color: var(--primary-color) !important;
text-decoration: none;
transform: translateX(8px);
}
.converter-icon {
display: flex;
align-items: center;
justify-content: center;
width: 3rem;
height: 3rem;
background: var(--primary-gradient) !important;
color: white !important;
border-radius: 0.75rem;
margin-right: 1rem;
flex-shrink: 0;
font-size: 1.25rem;
transition: all 0.3s ease;
}
.converter-item:hover .converter-icon {
transform: scale(1.1);
box-shadow: 0 4px 12px rgba(13, 110, 253, 0.3);
}
.converter-content {
flex: 1;
min-width: 0;
}
.converter-content h4 {
margin: 0 0 0.25rem 0;
font-size: 1rem;
font-weight: 600;
color: inherit !important;
}
.converter-content p {
margin: 0;
font-size: 0.875rem;
color: var(--text-muted) !important;
line-height: 1.4;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
.converter-item:hover .converter-content p {
color: var(--text-muted) !important;
}
.converter-arrow {
display: flex;
align-items: center;
justify-content: center;
width: 2rem;
height: 2rem;
color: var(--text-muted) !important;
transition: all 0.3s ease;
flex-shrink: 0;
}
.converter-item:hover .converter-arrow {
color: var(--primary-color) !important;
transform: translateX(4px);
}
/* Título da seção */
h3.h4.mb-3.text-center {
color: var(--text-color) !important;
font-weight: 600;
}
/* ========== ACCORDION ========== */
.accordion {
border-radius: 1rem;
overflow: hidden;
box-shadow: var(--card-shadow);
}
.accordion-item {
border: none;
background-color: var(--card-bg) !important;
}
.accordion-item:not(:last-child) {
border-bottom: 1px solid var(--border-color);
}
.accordion-button {
background-color: var(--card-bg) !important;
color: var(--text-color) !important;
border: none;
font-weight: 600;
padding: 1.25rem 1.5rem;
transition: all 0.3s ease;
}
.accordion-button:not(.collapsed) {
background-color: var(--light-color) !important;
color: var(--primary-color) !important;
box-shadow: none !important;
}
.accordion-button:focus {
border: none;
box-shadow: 0 0 0 0.25rem rgba(13, 110, 253, 0.25) !important;
}
.accordion-button::after {
color: var(--primary-color) !important;
}
.accordion-body {
padding: 1.5rem;
color: var(--text-muted) !important;
line-height: 1.7;
background-color: var(--card-bg) !important;
}
/* ========== CARDS (para as páginas About, Contact, etc) ========== */
.card {
background-color: var(--card-bg) !important;
border: 1px solid var(--border-color);
box-shadow: var(--card-shadow);
border-radius: 1rem;
color: var(--text-color) !important;
}
.shadow-custom {
box-shadow: var(--card-shadow-hover) !important;
}
.text-gradient {
background: var(--primary-gradient);
-webkit-background-clip: text;
-webkit-text-fill-color: transparent;
background-clip: text;
}
/* ========== DROPDOWN DE IDIOMAS ========== */
.dropdown-toggle {
background: rgba(255, 255, 255, 0.2) !important;
border: 1px solid rgba(255, 255, 255, 0.3) !important;
color: white !important;
transition: all 0.3s ease;
border-radius: 0.5rem;
}
.dropdown-toggle:hover {
background: rgba(255, 255, 255, 0.3) !important;
color: white !important;
transform: translateY(-2px);
box-shadow: 0 4px 12px rgba(0, 0, 0, 0.2);
}
.dropdown-menu {
background-color: var(--card-bg) !important;
border: 1px solid var(--border-color);
box-shadow: 0 0.5rem 1rem rgba(0, 0, 0, 0.15);
border-radius: 0.5rem;
padding: 0.5rem;
}
.dropdown-item {
transition: all 0.2s ease;
border-radius: 0.375rem;
padding: 0.5rem 1rem;
color: var(--text-color) !important;
}
.dropdown-item:hover {
background-color: var(--light-color) !important;
color: var(--primary-color) !important;
}
/* ========== FOOTER ========== */
.footer {
background-color: var(--light-color) !important;
border-top: 1px solid var(--border-color);
color: var(--text-muted) !important;
margin-top: auto;
}
.footer a {
transition: all 0.3s ease;
color: var(--text-muted) !important;
}
.footer a:hover {
color: var(--primary-color) !important;
text-decoration: underline !important;
}
/* ========== PLACEHOLDERS DE ANÚNCIO ========== */
.ad-placeholder {
background-color: var(--light-color) !important;
border: 2px dashed var(--border-color);
border-radius: 1rem;
display: flex;
align-items: center;
justify-content: center;
text-align: center;
color: var(--text-muted) !important;
font-size: 1rem;
transition: all 0.3s ease;
font-weight: 500;
}
.ad-placeholder:hover {
border-color: rgba(13, 110, 253, 0.3);
background-color: #e9ecef !important;
}
.ad-top {
min-height: 90px;
margin-bottom: 2rem;
}
.ad-side {
min-height: 600px;
position: sticky;
top: 2rem;
}
/* ========== FORÇA TEXTO ESCURO EM TUDO ========== */
h1, h2, h3, h4, h5, h6, p, div, span, a {
color: inherit;
}
.container h1, .container h2, .container h3, .container h4, .container h5, .container h6 {
color: var(--text-color) !important;
}
.container p, .container div, .container span {
color: inherit;
}
/* ========== RESPONSIVIDADE ========== */
@media (max-width: 768px) {
.display-4 {
font-size: 2rem;
}
.lead {
font-size: 1rem;
}
.accordion-button,
.accordion-body {
padding: 1rem;
}
.converter-item {
padding: 0.875rem 1rem;
}
.converter-icon {
width: 2.5rem;
height: 2.5rem;
font-size: 1rem;
margin-right: 0.75rem;
}
.converter-content h4 {
font-size: 0.9rem;
}
.converter-content p {
font-size: 0.8rem;
}
.converter-arrow {
width: 1.5rem;
height: 1.5rem;
}
}
@media (max-width: 576px) {
.container {
padding-left: 1rem;
padding-right: 1rem;
}
.display-4 {
font-size: 1.75rem;
}
.lead {
font-size: 0.95rem;
}
}
/* ========== SCROLLBAR PERSONALIZADA ========== */
::-webkit-scrollbar {
width: 8px;
height: 8px;
}
::-webkit-scrollbar-track {
background: var(--light-color);
}
::-webkit-scrollbar-thumb {
background: var(--border-color);
border-radius: 4px;
}
::-webkit-scrollbar-thumb:hover {
background: var(--text-muted);
}