artabro/wire/modules/LanguageSupport/Language.php
2024-08-27 11:35:37 +02:00

144 lines
3.4 KiB
PHP
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<?php namespace ProcessWire;
/**
* A type of Page that represents a single Language in ProcessWire
*
* ProcessWire 3.x, Copyright 2023 by Ryan Cramer
* https://processwire.com
*
* @property LanguageTranslator $translator Get instance of LanguageTranslator for this language
* @property bool $isDefault Is this the default language?
* @property bool $isCurrent Is this the current language?
* @property Pagefiles $language_files Language translation files for /wire/ (language pack)
* @property Pagefiles $language_files_site Language translation files for /site/ (custom translations per site)
*
*/
class Language extends Page {
/**
* Whether this Language represents the default
*
*/
protected $isDefaultLanguage = false;
/**
* Construct a new Language instance
*
* @param Template $tpl
*
*/
public function __construct(Template $tpl = null) {
parent::__construct($tpl);
if(!$tpl) $this->template = $this->wire()->templates->get('language');
}
/**
* Wired to API
*
*/
public function wired() {
parent::wired();
$template = $this->wire()->templates->get('language');
if($template !== $this->template && (!$this->template || $this->template->name === 'language')) $this->template = $template;
}
/**
* Get a value from the language page (intercepting translator and isDefault)
*
* #pw-internal
*
* @param string $key
* @return mixed
*
*/
public function get($key) {
if($key == 'translator') return $this->translator();
if($key == 'isDefault' || $key == 'isDefaultLanguage') return $this->isDefaultLanguage;
if($key == 'isCurrent') return $this->isCurrent();
return parent::get($key);
}
/**
* Return an instance of the LanguageTranslator object prepared for this language
*
* #pw-internal
*
* @return LanguageTranslator
*
*/
public function translator() {
return $this->wire()->languages->translator($this);
}
/**
* Targets this as the default language
*
* #pw-internal
*
*/
public function setIsDefaultLanguage() {
$this->isDefaultLanguage = true;
}
/**
* Returns whether or not this is the default language
*
* @return bool
*
*/
public function isDefault() {
return $this->isDefaultLanguage || $this->name == 'default';
}
/**
* Returns whether or not this is the current users language
*
* @return bool
*
*/
public function isCurrent() {
return $this->id == $this->wire()->user->language->id;
}
/**
* Return the API variable used for managing pages of this type
*
* #pw-internal
*
* @return Languages
*
*/
public function getPagesManager() {
return $this->wire()->languages;
}
/**
* Get locale for this language
*
* See the `Languages::getLocale()` method for full details.
*
* @param int $category Optional category (default=LC_ALL)
* @return string|bool
* @see Languages::setLocale()
*
*/
public function getLocale($category = LC_ALL) {
return $this->wire()->languages->getLocale($category, $this);
}
/**
* Set the current locale to use settings defined for this language
*
* See the `Languages::setLocale()` method for full details.
*
* @param int $category Optional category (default=LC_ALL)
* @return string|bool Returns the locale that was set or boolean false if requested locale cannot be set.
* @see Languages::setLocale()
*
*
*/
public function setLocale($category = LC_ALL) {
return $this->wire()->languages->setLocale($category, $this);
}
}