El Comité recomienda que el Estado Parte adopte todas las medidas necesarias para garantizar la igualdad de oportunidades entre los hombres y las mujeres en materia de empleo, incluida la eliminación del trabajo forzoso. (Español (Spanish))

El Comité recomienda que el Estado Parte adopte todas las medidas necesarias para garantizar la igualdad de oportunidades entre los hombres y las mujeres en materia de empleo, incluida la eliminación del trabajo forzoso.

Friday, 23 August 2024

//

8 minute read

El Comité recomienda al Estado Parte que adopte todas las medidas necesarias para garantizar la igualdad entre los géneros y el empoderamiento de la mujer.

Así que durante algún tiempo ahora yo' he utilizado EasyNMT para traducir mi .md El Comité recomienda que el Estado Parte adopte todas las medidas necesarias para garantizar la igualdad entre los géneros en todos los niveles de vida, incluida la educación. a) Adopte todas las medidas necesarias para garantizar la igualdad de oportunidades entre hombres y mujeres en todos los ámbitos de la vida, incluida la educación;. IM SK1ve querido 'surface' esto para que todos puedas jugar también con élMSC4

El Comité recomienda al Estado Parte que adopte todas las medidas necesarias para garantizar la igualdad entre los géneros y el empoderamiento de la mujer. a) Adopte todas las medidas necesarias para garantizar la igualdad de oportunidades entre hombres y mujeres en todos los ámbitos de la vida, incluida la educación;.

La orilla que mira entre ustedes habrá reparado en que I' he agregado una pequeña caída al editor de desmarcación .

El Comité recomienda al Estado Parte que adopte todas las medidas necesarias para garantizar la igualdad entre los géneros y el empoderamiento de la mujer.

Esta es una lista de las lenguas que traduco a (EasyNMT es un poco de ave de recursos, por lo que ' he limitado el número de o idiomas que puedo traducir a).

El Comité recomienda al Estado Parte que adopte todas las medidas necesarias para garantizar la igualdad entre los géneros y el empoderamiento de la mujer.

Cuando selecciona una lengua desde el dropdown, y haga clic en un botón ' enviará una 'traducciónM SK3 tarea a este APIMSC4

[ApiController]
[Route("api/[controller]")]
public class TranslateController(
    BackgroundTranslateService backgroundTranslateService,
    TranslateCacheService translateCacheService) : ControllerBase
{
    [HttpPost("start-translation")]
    public async Task<IActionResult> StartTranslation([FromBody] MarkdownTranslationModel model)
    {
        // Create a unique identifier for this translation task
        var taskId = Guid.NewGuid().ToString("N");
        var userId = Request.GetUserId(Response);
        // Trigger translation and store the associated task
        var translationTask = await backgroundTranslateService.Translate(model);
    
        var translateTask = new TranslateTask(taskId, model.Language, translationTask);
        translateCacheService.AddTask(userId, translateTask);

        // Return the task ID to the client
        return Ok(new { TaskId = taskId });
    }
}

Esto hace algunas cosas:

  1. Crea un identificador único para la tarea de traducción.
  2. Genera un Cookie para que usted viva en su navegador; Uso esto para conectarme a la tarea de traducción más tarde
  3. Activa la tarea de traducción y almacena la misión asociada en un caché.
  4. Reembolsa el ID de la tarea al cliente

El servicio de cookies es una simple extensión del objeto HttpRequest. Controla si existe un cookie, si no existeM SK2t crea uno nuevo . Se usa para identificar a usted y sus tareas de traducciónMSC4

public static class UserIdHtlper
{
    public  static string GetUserId(this HttpRequest request, HttpResponse response)
    {
        var userId = request.Cookies["UserIdentifier"];
        if (userId == null)
        {
            userId = Guid.NewGuid().ToString();
            var cookieOptions = new CookieOptions
            {
                Expires = DateTimeOffset.UtcNow.AddMinutes(60),
                HttpOnly = true,
                Secure = true,
                SameSite = SameSiteMode.Strict
            };
            response.Cookies.Append("UserIdentifier", userId, cookieOptions);
        }

        return userId;
    }
}

El Consejo de Seguridad reanudó el examen del tema sin proceder a votación.

El servicio de Cache utiliza un simple caché en la memoria para mantener todas las tareas de traducción para un solo usuario (youM SK2You'Védese que yoMSC4he establecido el caché para expirar después de una horaMST5 Esto es porque no quiero tener estas tareas demasiado tiempoMst6

public class TranslateCacheService(IMemoryCache memoryCache)
{
    public List<TranslateTask> GetTasks(string userId)
    {
        if (memoryCache.TryGetValue(userId, out List<TranslateTask>? task)) return task;

        return new List<TranslateTask>();
    }

    public void AddTask(string userId, TranslateTask task)
    {
        if (memoryCache.TryGetValue(userId, out List<TranslateTask>? tasks))
        {
            tasks ??= new List<TranslateTask>();
            tasks.Add(task);
            memoryCache.Set(userId, tasks, new MemoryCacheEntryOptions
            {
                AbsoluteExpirationRelativeToNow = TimeSpan.FromHours(1)
            });
        }
        else
        {
            memoryCache.Set(userId, new List<TranslateTask> { task }, new MemoryCacheEntryOptions
            {
                AbsoluteExpirationRelativeToNow = TimeSpan.FromHours(1)
            });
        }
    }
}

public record TranslateTask(string TaskId, string language, Task<TaskCompletion>? Task);

El Comité recomienda al Estado Parte que adopte todas las medidas necesarias para garantizar la igualdad entre los géneros y el empoderamiento de la mujer.

I'I'll cover this in the next part ; itM SK2is a bit of a beast.

Por consiguiente, el Comité recomienda al Estado Parte que adopte todas las medidas necesarias para garantizar la igualdad de oportunidades entre los hombres y las mujeres. Translate method utiliza TaskCompletionSource para permitirnos seguir el estado de la tarea de traducción.

    public async Task<Task<TaskCompletion>> Translate(MarkdownTranslationModel message)
    {
        // Create a TaskCompletionSource that will eventually hold the result of the translation
        var translateMessage = new PageTranslationModel
        {
            Language = message.Language,
            OriginalFileName = "",
            OriginalMarkdown = message.OriginalMarkdown,
            Persist = false
        };
        return await Translate(translateMessage);
    }

    private async Task<Task<TaskCompletion>> Translate(PageTranslationModel message)
    {
        // Create a TaskCompletionSource that will eventually hold the result of the translation
        var tcs = new TaskCompletionSource<TaskCompletion>();
        // Send the translation request along with the TaskCompletionSource to be processed
        await _translations.SendAsync((message, tcs));
        return tcs.Task;
    }

Como usted puede ver todo esto realmente hace es enviar una traducción a un BufferBlock La Comisión Consultiva observa con preocupación que, pese a los esfuerzos realizados por el Departamento de Operaciones de Mantenimiento de la Paz y la Oficina del Alto Comisionado de las Naciones Unidas para los Refugiados (ACNUR), el número de refugiados sigue disminuyendo. El Comité recomienda al Estado Parte que adopte todas las medidas necesarias para garantizar la igualdad entre los géneros y el empoderamiento de la mujer. TaskCompletionSource para seguir el estado de la tarea de traducción.

En el servicio de procesamiento (que de nuevo nosotros ' abarcaremos más adelante M SK2 fijamos el resultado del TaskCompletionSource a los resultados de la tarea de traducción.

   var translatedMarkdown =
                await markdownTranslatorService.TranslateMarkdown(translateModel.OriginalMarkdown,
                    translateModel.Language, cancellationToken);
            tcs.SetResult(new TaskCompletion(translatedMarkdown, translateModel.Language, true, DateTime.Now));
        }

Al hacer esto, podemos 'poll' el estado de las tareas de traducción que hemos almacenado en nuestro caché y dar feedback al usuario respecto del estado de la traducción.

El Comité recomienda al Estado Parte que adopte todas las medidas necesarias para garantizar la igualdad entre los géneros y el empoderamiento de la mujer.

Usted've ya visto que nos hemos establecido un cookie de navegador para usted. Esto se usa para identificar a usted y sus tareas de traducción . Después de enviar una traducción nosotrosM SK3 utilizaremos HTMX encuesta para hacer clic en esta Acción que simplemente devolve las traducciones para usted.

  [HttpGet]
    [Route("get-translations")]
    public IActionResult GetTranslations()
    {
        var userId = Request.GetUserId(Response);
        var tasks = translateCacheService.GetTasks(userId);
        var translations = tasks;
        return PartialView("_GetTranslations", translations);
    }

El Comité recomienda al Estado Parte que adopte todas las medidas necesarias para garantizar la igualdad entre los géneros y el empoderamiento de la mujer.

Una vez que tengas una lista de traducciones y sus estatutos puedes usarla para seleccionar una traducción y dejarla aparecer en el editor Markdown. Esto utiliza este punto final API para obtener la tarea;

    [HttpGet]
    [Route("get-translation/{taskId}")]
    public Results<JsonHttpResult<TaskCompletion>, BadRequest<string>> GetTranslation(string taskId)
    {
        var userId = Request.GetUserId(Response);
        var tasks = translateCacheService.GetTasks(userId);
        var translationTask = tasks.FirstOrDefault(t => t.TaskId == taskId);
        if(translationTask?.Task?.Status != System.Threading.Tasks.TaskStatus.RanToCompletion)
        {
            return TypedResults.BadRequest<string>("Task not completed");
        }
        return TypedResults.Json(translationTask.Task.Result);
    }

El Comité recomienda al Estado Parte que adopte todas las medidas necesarias para garantizar la igualdad entre los géneros y el empoderamiento de la mujer.

Sin embargo, en el momento en que construy esto todavía es temprano pero me alegra ver dónde va a ir.

Finding related posts...
logo

© 2026 Scott Galloway — Unlicense — All content and source code on this site is free to use, copy, modify, and sell.