teppo Posted June 30, 2019 Posted June 30, 2019 I've got a feeling that this is either something that by design shouldn't work, or it's something that has a really simple solution and soon I'll have a major facepalm moment: can we define translatable text in /site/config.php in PW3 – and if so, how? ? So far I'm not having much luck. Calling __('Translatable') produces fatal error, and so does $config->__('Translatable'). (Config extends Wire, so figured latter could've worked.) Based on the errors it seems that this might be an impossible situation: in order to get to the translation functions I'd first have to have a ProcessWire instance running, and I don't have one running before config has been parsed. Any ideas, or am I missing something important here? Here's that fatal error, just for reference: Fatal error: Uncaught Error: Call to a member function wire() on null in /wire/core/Functions.php:25 Stack trace: #0 /wire/core/LanguageFunctions.php(30): ProcessWire\wire('languages') #1 /wire/core/Wire.php(1516): ProcessWire\__('Translatable', Object(ProcessWire\Config)) #2 /site/config.php(90): ProcessWire\Wire->_('Translatable') #3 /wire/core/ProcessWire.php(923): require('/var/www/sites/...') #4 /index.php(33): ProcessWire\ProcessWire::buildConfig('/var/www/sites/...') #5 {main} thrown in /wire/core/Functions.php on line 25
teppo Posted June 30, 2019 Author Posted June 30, 2019 For the time being I've resolved this by moving config settings with translatable strings to a separate file, which I'm then including later in the process after ProcessWire has been properly set up. If anyone has a better idea, please let me know ?
tpr Posted June 30, 2019 Posted June 30, 2019 Perhaps using something like $str = function { return if (function_exists('__')) { return __('key'); } ), or something along these lines? Just a quick idea from mobile ? 1
horst Posted June 30, 2019 Posted June 30, 2019 4 hours ago, teppo said: For the time being I've resolved this by moving config settings with translatable strings to a separate file, which I'm then including later in the process after ProcessWire has been properly set up. If anyone has a better idea, please let me know ? Without testing anything in this regard, in my understanding, when config.php is called is to early. Never thought this could / should work. In init.php or ready.php I assume it will work.
bernhard Posted June 30, 2019 Posted June 30, 2019 4 hours ago, teppo said: For the time being I've resolved this by moving config settings with translatable strings to a separate file, which I'm then including later in the process after ProcessWire has been properly set up. If anyone has a better idea, please let me know ? Don't see anything bad with that. What strings do you want to be translatable? Never needed translatable strings in config ? Would ready.php be too late? Or a separate module's init()? You could also set $config->... = $this->_(...); there 1
teppo Posted June 30, 2019 Author Posted June 30, 2019 1 hour ago, bernhard said: What strings do you want to be translatable? These were for MarkupMenu, an aria-label within template strings that I wanted to be translatable ? Not sure if I've ever tried this before either; didn't occur to me that it wouldn't be possible, but makes sense now. Anyway, the separate config file idea actually works quite nicely for me in this case. Ready.php would've been a good solution as well ? 2
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now