Se afișează postările cu eticheta Moodle. Afișați toate postările
Se afișează postările cu eticheta Moodle. Afișați toate postările

luni, 14 octombrie 2013

Timpul local și data în limba română în Moodle (sau - pînă ajungi la Dumnezeu, te mănîncă sfinții)

1. Problema


Data creării subiectelor de discuție din forumuri este afișată în limba engleză, iar ora în format 12 ore (sufixate cu AM sau PM după caz); de exemplu:

by Admin User - Tuesday, September 10, 2013, 7:46 PM

în loc de

de către Admin User - marți, 10 septembrie 2013, 19:46

Chiar dacă... toate opțiunile legate de formatul afișării datei și orei, limba implicită pentru site, setările de localizare, chiar și traducerile zilelor săptămînii și a denumirilor lunilor... toate-s în ordine.

2. Contextul


Ubuntu 12.04 LTS; Moodle 2.5.1

3. Pre soluție


Moodle este scris în PHP. Respectiv formatarea datei și timpului se face prin funcțiile din PHP, în particular prin funcția strftime (http://php.net/manual/ro/function.strftime.php). Acest fapt poate fi confirmat analizînd codul sursă sau, mai simplu, prin faptul ca în fișierul langconfig.php din categoria core (Site administration > Language > Language customisation) șabloanele de formatare a datei și orei au sintaxa identică cu cea a argumentului format a funcției strftime.

Funcția strftime la rîndul ei formatează în raport cu setările regionale curente a sistemului de operare. Dacă se dorește formatarea cu alte setări regionale  fără a schimba cele curente a sistemului se poate folosi funcția setlocale.

Anume așa e realizat în Moodle. Înainte de a fi utilizată vreo funcție de formatare a datei sau orei se cheamă funcției moodle_setlocale (din moodlelib.php) care la rîndul ei cheamă setlocale.

Funcția setlocale activează setările regionale indicate; cu condiția că acestea sînt disponibile în sistem. Puteți chema de 1001 ori funcția setlocale cu parametrul, de exemplu, ro_RO.UTF-8, dar dacă aceste setări regionale nu-s instalate în sistem nu veți avea denumiri de luni în română. De unde? Sistemul nu le are.

Cel mai des cînd se instalează sistemul cel care instalează specifică fusul orar, specifică moneda, iar setările regionale rămîn cele englezești, adică en_EN. Configurația ro_RO.UTF-8 nefiind instalată (pe server). Pe un calculator Desktop posibil că da (de exemplu cînd am instalat Linux Mint cu KDE imediat după instalare am fost rugat să introduce astfel de info).


Așadar, dacă nu aveți setările regionale ro_RO.UTF-8 instalate nu aveți cum să primiți denumiri de luni în română.

4. Soluția



Verificați setările Moodle legate de localizare:

  • Administration > Language > Language Settings
    • Default language = Română (ro)
    • Sitewide locale = ro_RO.UTF-8
  • Administration > Appearance > Calendar
    • Time display format = 24=hour
  • Administration > Language > Language Customisation > Română (ro)
    • core calendar.php: zilele săptămînii sînt traduse
    • core langconfig.php: locale=ro_RO.UTF-8

Verificați lista fișierelor de localizare (setări regionale) disponibile în sistem:

locale -a

Dacă în lista afișată lipsește rîndul ro_RO.utf8. Atunci acest fișier trebuie generat. Îl puteți genera cu ajutorul comenzii:


sudo locale-gen ro_RO.UTF-8

După ce ați generat fișierul de localizare obligatoriu reporniți sistemul, de exemplu prin:  

sudo reboot

Dacă nu reporniți sistemul funcția PHP strftime se va comporta straniu: ba va formata în română, ba în engleză.

luni, 16 septembrie 2013

Fixing (un)common Moodle errors

1. Site Administration block with unexpandable links


The problem: in the "Site administration" block, the links such as "users", "courses", "grades" (or any other links that must expand on a click) do not work like they're supposed to.
The context: I ran into this issue after I've changed the location of "moodledata" directory on the server (Ubuntu 12.04 LTS; Moodle 2.5.1).
The solution: I had to purge the caches via command line, as follows:
sudo su www-data -c "php admin/cli/purge_caches.php"
Here are some links that I found on this issue. However, I didn't find out the reason for this problem to appear:

2. "Incorrect access detected, this server may be accessed only through..."

The problem: i have an instance of Moodle behind a proxy and the former (the instance) is mapped in the local proxy URL space by use of ProxyPass and ProxyPassReverse directives. I have modified the "$CFG->wwwroot" parameter from "config.php" to match the proxy server domain name, but I still get the error message:

Incorrect access detected, this server may be accessed only through "http://xxx.xxx.xxx.xxx/moodle" address, sorry.

The context: Ubuntu 14.04.02 LTS; Moodle 2.8.5+).
The solution: add to "config.php", before the "lib/setup.php" include directive,  the line:

$CFG->reverseproxy = true;


vineri, 3 septembrie 2010

"Recuperarea" parolei de administrator în MOODLE

Sînt nevoit să utilizez indicațiile din acest rticol din motiv că des mi se întîmplă să uit parola de administrator Moodle, iar acest post îl scriu iarăși din cauza că după ce "recuperez" parola peste un timp uit de indicațiile din articolul de mai sus :-).