mirror of
https://github.com/tuxbox-fork-migrations/recycled-ni-neutrino.git
synced 2025-08-26 15:02:50 +02:00
Origin commit data
------------------
Branch: ni/coolstream
Commit: 82372adca6
Author: vanhofen <vanhofen@gmx.de>
Date: 2022-12-03 (Sat, 03 Dec 2022)
Origin message was:
------------------
- nhttpd: change default language to deutsch
------------------
No further description and justification available within origin commit message!
------------------
This commit was generated by Migit
123 lines
4.0 KiB
C++
123 lines
4.0 KiB
C++
//=============================================================================
|
|
// YHTTPD
|
|
// Language
|
|
//=============================================================================
|
|
|
|
// c
|
|
#include <cstdarg>
|
|
#include <cstdio>
|
|
#include <cstdlib>
|
|
#include <unistd.h>
|
|
|
|
#include <system/helpers.h>
|
|
|
|
// yhttpd
|
|
#include <yconfig.h>
|
|
#include <yhttpd.h>
|
|
#include "ylanguage.h"
|
|
#include "yconnection.h"
|
|
|
|
#include <global.h>
|
|
|
|
//=============================================================================
|
|
// Instance Handling - like Singelton Pattern
|
|
//=============================================================================
|
|
//-----------------------------------------------------------------------------
|
|
// Init as Singelton
|
|
//-----------------------------------------------------------------------------
|
|
CLanguage* CLanguage::instance = NULL;
|
|
CConfigFile* CLanguage::DefaultLanguage = NULL;
|
|
CConfigFile* CLanguage::ConfigLanguage = NULL;
|
|
CConfigFile* CLanguage::NeutrinoLanguage = NULL;
|
|
std::string CLanguage::language = "";
|
|
std::string CLanguage::language_dir = "";
|
|
//-----------------------------------------------------------------------------
|
|
// There is only one Instance
|
|
//-----------------------------------------------------------------------------
|
|
CLanguage *CLanguage::getInstance(void){
|
|
if (!instance)
|
|
instance = new CLanguage();
|
|
return instance;
|
|
}
|
|
|
|
//-----------------------------------------------------------------------------
|
|
void CLanguage::deleteInstance(void){
|
|
if (instance)
|
|
delete instance;
|
|
instance = NULL;
|
|
}
|
|
|
|
//-----------------------------------------------------------------------------
|
|
// Constructor
|
|
//-----------------------------------------------------------------------------
|
|
CLanguage::CLanguage(void)
|
|
{
|
|
DefaultLanguage = new CConfigFile(',');
|
|
ConfigLanguage = new CConfigFile(',');
|
|
NeutrinoLanguage = new CConfigFile(',');
|
|
language = "";
|
|
language_dir =getLanguageDir();
|
|
}
|
|
|
|
//-----------------------------------------------------------------------------
|
|
CLanguage::~CLanguage(void)
|
|
{
|
|
delete DefaultLanguage;
|
|
delete ConfigLanguage;
|
|
delete NeutrinoLanguage;
|
|
}
|
|
|
|
//=============================================================================
|
|
|
|
//-----------------------------------------------------------------------------
|
|
void CLanguage::setLanguage(std::string _language){
|
|
language=_language;
|
|
ConfigLanguage->loadConfig(language_dir + "/" + _language);
|
|
DefaultLanguage->loadConfig(language_dir + "/" + HTTPD_DEFAULT_LANGUAGE);
|
|
|
|
const char * path[2] = { LOCALEDIR_VAR, LOCALEDIR };
|
|
for (int i = 0; i < 2; i++)
|
|
{
|
|
std::string filename = path[i];
|
|
filename += "/";
|
|
filename += g_settings.language;
|
|
filename += ".locale";
|
|
|
|
if(access(filename.c_str(), F_OK) == 0) {
|
|
NeutrinoLanguage->loadConfig(filename, ' ');
|
|
break;
|
|
}
|
|
else if (i == 1) {
|
|
// load neutrino default language (should not happen)
|
|
NeutrinoLanguage->loadConfig(LOCALEDIR "/deutsch.locale", ' ');
|
|
}
|
|
}
|
|
}
|
|
|
|
//-----------------------------------------------------------------------------
|
|
// return translation for "id" if not found use default language
|
|
//-----------------------------------------------------------------------------
|
|
std::string CLanguage::getTranslation(std::string id){
|
|
std::string trans=ConfigLanguage->getString(id,"");
|
|
if(trans.empty())
|
|
trans=NeutrinoLanguage->getString(id,"");
|
|
if(trans.empty())
|
|
trans=DefaultLanguage->getString(id,"");
|
|
if (trans.empty())
|
|
trans = "# " + id + " #";
|
|
return trans;
|
|
}
|
|
//-----------------------------------------------------------------------------
|
|
// Find language directory
|
|
//-----------------------------------------------------------------------------
|
|
std::string CLanguage::getLanguageDir(void){
|
|
std::string tmpfilename = "/"+Cyhttpd::ConfigList["Language.directory"],dir="";
|
|
|
|
if( access(Cyhttpd::ConfigList["WebsiteMain.override_directory"] + tmpfilename,R_OK) == 0)
|
|
dir = Cyhttpd::ConfigList["WebsiteMain.override_directory"] + tmpfilename;
|
|
else if(access(Cyhttpd::ConfigList["WebsiteMain.directory"] + tmpfilename,R_OK) == 0)
|
|
dir = Cyhttpd::ConfigList["WebsiteMain.directory"] + tmpfilename;
|
|
return dir;
|
|
}
|
|
|