Conoscere la valuta monetaria locale utilizzata dal sistema operativo

Da Gambas-it.org - Wikipedia.
Versione del 20 dic 2015 alle 14:11 di Vuott (Discussione | contributi) (Creata pagina con "Per conoscere quale tipo di valuta moneria usa il nostro sistema operativo, è possibile utilizzare almeno due modalità. ===Uso delle sole risorse di Gambas=== L'uso delle...")

(diff) ← Versione meno recente | Versione attuale (diff) | Versione più recente → (diff)

Per conoscere quale tipo di valuta moneria usa il nostro sistema operativo, è possibile utilizzare almeno due modalità.


Uso delle sole risorse di Gambas

L'uso delle sole risorse di Gambas per conoscere quale tipo di valuta moneria usa il nostro sistema operativo, prevede che si vada ad individuare nella directory "/usr/share/i18n/locales" il file corrispondente al tipo di lingua impostata nel nostro sistema. Infatti i file presenti in detta directory sono contraddistinti da un nome simile a quello identificativo della lingua locale utilizzata.
Successivamente si dovrà andare a leggere il contenuto del file individuato ed interpretare i valore UNICODE presenti nelle righe che identificate con int_curr_symbol per la valuta monetaria, e currency_symbol, per il simbolo della valuta.


Mostriamo di seguito un esempio:

Public Sub Main()
  
 Dim lingua, locales, arcloc, unicode, moneta As String
 Dim b As Byte
 
   locales = "/usr/share/i18n/locales"
   
   lingua = Scan(System.Language, "*.*")[0]
 
   arcloc = File.load(locales &/ Dir(locales, lingua, gb.File)[0])
   
   unicode = Scan(Replace(arcloc, " ", Null), "*int_curr_symbol\"<U*<U0020>*")[1]
  
   For b = 1 To 18 Step 7
     moneta &= Chr(Val("&" & Mid(unicode, b, 4)))
   Next
   
   Print "Valuta monetaria:  "; moneta
   
   
   unicode = Scan(Replace(arcloc, " ", Null), "*currency_symbol\"<U*>*")[1]
   
   Print "Simbolo monetario: "; String.Chr(Val("&" & unicode))
  
End


Uso delle risorse della libreria Libc.so.6

La seconda modalità prevede l'uso di alcune risorse della libreria Libc.so.6 .


Mostriamo un possibile esempio:

Library "libc:6"

Public Struct Lconv
  decimal_point As Pointer
  thousands_sep As Pointer
  grouping As Pointer
  int_curr_symbol As Pointer
  currency_symbol As Pointer
End Struct

Private Const LC_MONETARY As Integer = 4

' char *setlocale (int __category, const char *__locale)
' Set and/or return the current locale.
Private Extern setlocale(category As Integer, locale As String) As Pointer

' struct lconv *localeconv(void)
' Return the numeric/monetary information for the current locale.
Private Extern localeconv() As Lconv


Public Sub Main()

 Dim lc As New Lconv
 
' Specifichiamo la categoria e l'ambiente dell'impostazione locale per lingua:
  setlocale(LC_MONETARY, System.Language)
  
' Ritorna un Puntatore alla Struttura che dà informazioni sui simboli numerici secondo l'impostazione locale:
  lc = localeconv()
  
  With lc
    Print "Valuta monetaria: "; String@(.int_curr_symbol)
    Print "Simbolo monetario: "; String@(.currency_symbol)
  End With
  
End



Riferimenti

  • /usr/include/locale.h