CodeIgniter Forums
$this->lang->line with passing parameters - Printable Version

+- CodeIgniter Forums (https://forum.codeigniter.com)
+-- Forum: Using CodeIgniter (https://forum.codeigniter.com/forum-5.html)
+--- Forum: Libraries & Helpers (https://forum.codeigniter.com/forum-11.html)
+--- Thread: $this->lang->line with passing parameters (/thread-63168.html)



$this->lang->line with passing parameters - rchiu5hk - 10-02-2015

Dear all,

I have the string with passing parameters as below:
$lang["error"]="this is error {0} with msg {1}"

How to pass {0} and {1} to $lang["error"] and show on php webpage??

$this->lang->line("error", "crazy", "want to do something good");
Is it possible??


RE: $this->lang->line with passing parameters - ciadmin - 10-02-2015

Here's the idea...

$lang["error"]="this is error %s with msg %s"

then

$result = sprintf($this->lang('error'),"crazy,"want to do something good");

Display $result on your webpage or whatever.


RE: $this->lang->line with passing parameters - jLinux - 10-02-2015

(10-02-2015, 05:22 AM)ciadmin Wrote: Here's the idea...

$lang["error"]="this is error %s with msg %s"

then

$result = sprintf($this->lang('error'),"crazy,"want to do something good");

Display $result on your webpage or whatever.
This is the exact solution I was going to suggest.

If you want, you could do something like extend the lang library and either create a new method that will do this, or change the Lang::line method to look for parameters via Variadic functions, or if you dont have PHP 5.6 or later, use func_num_args to check if any arguments were passed, if not, just use the parent::line(), if there were, then handle them using func_get_args and sprintf, thats what I would do anyways.


RE: $this->lang->line with passing parameters - sampoyigi - 10-04-2015

(10-02-2015, 06:19 AM)jLinux Wrote:
(10-02-2015, 05:22 AM)ciadmin Wrote: Here's the idea...

$lang["error"]="this is error %s with msg %s"

then

$result = sprintf($this->lang('error'),"crazy,"want to do something good");

Display $result on your webpage or whatever.
This is the exact solution I was going to suggest.

If you want, you could do something like extend the lang library and either create a new method that will do this, or change the Lang::line method to look for parameters via Variadic functions, or if you dont have PHP 5.6 or later, use func_num_args to check if any arguments were passed, if not, just use the parent::line(), if there were, then handle them using func_get_args and sprintf, thats what I would do anyways.

the Variadic functions got my attention... So its like extending the Lang classs to use lang->line(line, args, args) instead of sprintf(lang->line(), ..., ...). I'd try that


RE: $this->lang->line with passing parameters - jLinux - 10-04-2015

(10-04-2015, 10:23 AM)sampoyigi Wrote:
(10-02-2015, 06:19 AM)jLinux Wrote:
(10-02-2015, 05:22 AM)ciadmin Wrote: Here's the idea...

$lang["error"]="this is error %s with msg %s"

then

$result = sprintf($this->lang('error'),"crazy,"want to do something good");

Display $result on your webpage or whatever.
This is the exact solution I was going to suggest.

If you want, you could do something like extend the lang library and either create a new method that will do this, or change the Lang::line method to look for parameters via Variadic functions, or if you dont have PHP 5.6 or later, use func_num_args to check if any arguments were passed, if not, just use the parent::line(), if there were, then handle them using func_get_args and sprintf, thats what I would do anyways.

the Variadic functions got my attention... So its like extending the Lang classs to use lang->line(line, args, args) instead of sprintf(lang->line(), ..., ...). I'd try that

Yep, thats very possible! Ive thought about doing it, but I havent gotten to the part of my app where I work on the multi-lingual stuff


RE: $this->lang->line with passing parameters - ivantcholakov - 10-04-2015

If there are enough people wanting this feature, the following topic could be reconsidered: https://github.com/bcit-ci/CodeIgniter/pull/3223


RE: $this->lang->line with passing parameters - jLinux - 10-04-2015

Nice, the code in here is exactly what i planned on doing: https://github.com/bcit-ci/CodeIgniter/pull/3223#issuecomment-54707715


RE: $this->lang->line with passing parameters - sampoyigi - 10-05-2015

(10-04-2015, 01:58 PM)ivantcholakov Wrote: If there are enough people wanting this feature, the following topic could be reconsidered: https://github.com/bcit-ci/CodeIgniter/pull/3223

Thank you sharing. Looking at the code gives a better idea of the logic.