1
0
mirror of https://github.com/typemill/typemill.git synced 2025-01-17 13:28:19 +01:00
php-typemill/system/Translations.php
2020-10-03 21:28:20 +02:00

89 lines
3.1 KiB
PHP

<?php
namespace Typemill;
class Translations
{
public static function loadTranslations($environment)
{
$yaml = new Models\WriteYaml();
$settings = $yaml->getYaml('settings', 'settings.yaml');
if(!isset($settings['language'])){
$language = \Typemill\Settings::whichLanguage();
} else {
$language = $settings['language'];
}
$theme = 'cyanine';
if($settings !== NULL){
if(is_array($settings)){
if (array_key_exists('theme', $settings)) {
$theme = $settings['theme'];
}
}
}
// theme labels selected according to the environment: admin or user
$theme_labels = [];
$theme_language_folder = 'themes' . DIRECTORY_SEPARATOR . $theme . DIRECTORY_SEPARATOR . 'languages' . DIRECTORY_SEPARATOR . $environment . DIRECTORY_SEPARATOR;
$theme_language_file = $language . '.yaml';
if (file_exists($theme_language_folder . $theme_language_file))
{
$theme_labels = $yaml->getYaml($theme_language_folder, $theme_language_file);
}
$system_labels = [];
$plugins_labels = [];
if($environment=='admin'){
// system labels
$system_language_folder ='system' . DIRECTORY_SEPARATOR . 'author' . DIRECTORY_SEPARATOR . 'languages' . DIRECTORY_SEPARATOR;
$system_language_file = $language . '.yaml';
if (file_exists($system_language_folder . $system_language_file))
{
$system_labels = $yaml->getYaml($system_language_folder, $system_language_file);
}
// Next change, to provide labels for the admin and user environments.
// There may be plugins that only work in the user environment,
// only in the admin environment, or in both environments.
$plugin_labels = [];
if($settings !== NULL){
if(is_array($settings)){
if (array_key_exists('plugins', $settings)) {
if($settings['plugins'] !== NULL) {
foreach($settings['plugins'] as $plugin => $config){
if($config['active']=='on'){
$plugin_language_folder = 'plugins' . DIRECTORY_SEPARATOR . $plugin . DIRECTORY_SEPARATOR . 'languages' . DIRECTORY_SEPARATOR;
$plugin_language_file = $language . '.yaml';
if (file_exists($plugin_language_folder . $plugin_language_file)){
$plugin_labels[$plugin] = $yaml->getYaml($plugin_language_folder, $plugin_language_file);
}
}
}
foreach($plugin_labels as $key => $value) {
if(is_array($value)){
$plugins_labels = array_merge($plugins_labels, $value);
}
}
}
}
}
}
}
$labels = [];
if(is_array($plugins_labels)){
$labels = array_merge($labels, $plugins_labels);
}
if(is_array($system_labels)){
$labels = array_merge($labels, $system_labels);
}
if(is_array($theme_labels)){
$labels = array_merge($labels, $theme_labels);
}
return $labels;
}
}