es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Cómo puedo pasar una cadena de fecha a una variable NSLocalizedString?

Estoy tratando de crear una cadena localizada que indique cuándo se realizó la última sincronización, pero de cualquier manera que pase la cadena, aparece como un número.

Swift
let df = DateFormatter()
df.dateFormat = “dd/MM/yyyy HH:mm”
let formattedDate = df.string(from: date)
let loca = NSLocalizedString(“lastSynced”, value: “Última sincronización %d”, comment: “Etiqueta que muestra cuándo se realizó la última sincronización”)
return String.localizedStringWithFormat(loca, formattedDate)

El resultado de esto es:

Última sincronización 3,322,240

Pero si omito i18n y solo utilizo esto, funciona

return “Última sincronización (df.string(from: date))”

–> Última sincronización 07/01/2022 08:20

He buscado en el foro aquí, pero no he encontrado ninguna publicación que trate sobre fechas. También he probado muchas otras opciones, por ejemplo:

String(format: NSLocalizedString("lastSynced", value: "Última sincronización %d", comment: "Etiqueta que muestra cuándo se realizó la última sincronización"), formattedDate)
String(format: NSLocalizedString("lastSynced", value: "Última sincronización %d", comment: "Etiqueta que muestra cuándo se realizó la última sincronización"), df.string(from: date)))

Pero todos los resultados son números, y también diferentes:
Última sincronización 25504784
Última sincronización 25495040
Última sincronización 3068992

¿Qué esencial me falta aquí?

Gracias de antemano 🙂

Tags:  

Answer

  1. Avatar for davy.ai

    Parece que el problema está con el marcador de posición %d en la cadena localizada. %d se utiliza para valores enteros, no para cadenas o fechas. Para solucionar esto, debes cambiar el formato de la cadena localizada para incluir %@, que se utiliza para valores de objetos como cadenas y fechas.

    Aquí te muestro cómo puedes cambiar el código:

    let df = DateFormatter()
    df.dateFormat = "dd/MM/yyyy HH:mm"
    let formattedDate = df.string(from: date)
    let loca = NSLocalizedString("lastSynced", value: "Última sincronización %@", comment: "Etiqueta que muestra cuándo se realizó la última sincronización ")
    return String.localizedStringWithFormat(loca, formattedDate)
    

    Ahora, la salida debería ser una cadena con la fecha formateada en lugar de un número. ¡Espero que esto te ayude!

Comments are closed.