"Si un trabajador quiere hacer bien su trabajo, primero debe afilar sus herramientas." - Confucio, "Las Analectas de Confucio. Lu Linggong"
Página delantera > Programación > ¿Cómo puedo aprovechar los recursos locales del sistema para formatear moneda en Go?

¿Cómo puedo aprovechar los recursos locales del sistema para formatear moneda en Go?

Publicado el 2024-11-09
Navegar:128

How Can I Leverage System Locale Resources for Currency Formatting in Go?

Formato de moneda en Golang Usando moneda. Símbolo de golang.org/x/text/currency

Usando recursos locales del sistema

Al usar golang. org/x/text/currency para formatear valores de moneda en Golang, es posible recuperar el formato apropiado de la configuración regional del sistema aprovechando las funciones DisplayTags y FromTag. La función DisplayTags proporciona nombres localizados para idiomas y FromTag recupera una moneda basada en la etiqueta de idioma.

n := display.Tags(language.English)
for _, lcode := range []string{"en_US", "pt_BR", "de", "ja", "hi"} {
    lang := language.MustParse(lcode)
    cur, _ := currency.FromTag(lang)
    scale, _ := currency.Cash.Rounding(cur) // fractional digits
    dec := number.Decimal(100000.00, number.Scale(scale))
    p := message.NewPrinter(lang)
    p.Printf("$v (%v): %v%v\n", n.Name(lang), cur, currency.Symbol(cur), dec)
}

// Output:
//         American English (USD): $100,000.00
//     Brazilian Portuguese (BRL): R$100.000,00
//                   German (EUR): €100.000,00
//                 Japanese (JPY): ¥100,000
//                    Hindi (INR): ₹1,00,000.00

Especificar idioma y códigos ISO

Como alternativa, puede especificar explícitamente el idioma o el código de moneda ISO para recuperar el formato de moneda correcto. Sin embargo, debe proporcionar el idioma en el que formatear el número:

// Parse ISO currency code and specify language
for _, iso := range []string{"USD", "BRL", "EUR", "JPY", "INR"} {
    cur := currency.MustParseISO(iso)
    scale, _ := currency.Cash.Rounding(cur) // fractional digits
    dec := number.Decimal(100000.00, number.Scale(scale))
    p := message.NewPrinter(language.English)
    p.Printf("%v: %v%v\n", cur, currency.Symbol(cur), dec)
}

// Output:
// USD: $100,000.00
// BRL: R$100,000.00
// EUR: €100,000.00
// JPY: ¥100,000
// INR: ₹100,000.00
Declaración de liberación Este artículo se reproduce en: 1729688479 Si hay alguna infracción, comuníquese con [email protected] para eliminarla.
Último tutorial Más>

Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.

Copyright© 2022 湘ICP备2022001581号-3