gpt4 book ai didi

php - Zend 框架 2 - 如何制作语言切换器

转载 作者:行者123 更新时间:2023-12-04 19:15:44 26 4
gpt4 key购买 nike

我正在开发一个 Zend Framework 2 应用程序,现在我想实现一个语言切换器, guest /注册用户可以从中选择他们想要的语言,我不明白的是它是如何在 Zend Framework 2 中使用存储(不是来自 urls ),一旦他选择了一种,我想将客人的首选语言保留在存储中,对于注册用户,我可以从 cookie/数据库中检索首选语言并将其与存储一起使用。但是我应该在哪里以及如何开始/实现呢?
先感谢您。

最佳答案

设置您的 Locales在您的 global.config.php :

'locale' => array(
'default' => 'en_US',
'available' => array(
'de_DE' => 'Deutsch',
'nl_NL' => 'Dutch',
'en_US' => 'English',
'fr_FR' => 'French',
),
),

所以在你的 Application\Module.php您可以添加一个设置默认值的方法 Zend\Translator\Translator :
class Module {

public function onBootstrap(MvcEvent $e)
{
$applicaton = $e->getApplication();
$serviceManager = $application->getServiceManager();
// Just a call to the translator, nothing special!
$serviceManager->get('translator');
$this->initTranslator($e);

// Etc, more of your bootstrap function.
}

protected function initTranslator(MvcEvent $event)
{
$serviceManager = $event->getApplication()->getServiceManager();

// Zend\Session\Container
$session = New Container('language');

$translator = $serviceManager->get('translator');
$translator
->setLocale($session->language)
->setFallbackLocale('en_US');
}
}

所以现在默认的语言环境是 zh_CN 因为 session 没有可用的语言环境。要更改语言环境,您需要捕获用户输入并验证您支持的可用语言环境,在您的 global.config.php 中提供。 .所以为了改变它,你可能需要添加一个 Controller Action 来捕捉用户的输入并设置新的语言环境。不使用任何表单的 Controller 操作示例!
public function changeLocaleAction() 
{
// New Container will get he Language Session if the SessionManager already knows the language session.
$session = new Container('language');
$language = $this->getRequest()->getPost()->language;
$config = $this->serviceLocator->get('config');
if (isset($config['locale']['available'][$language]) {
$session->language = $language;
$this->serviceLocator->get('translator')->setLocale($session->language);
}
}

session 允许用户更改他们的语言环境并记住它直到 session 结束,因此他们在一段时间后返回时不需要更改它。希望这会对您有所帮助,并可以帮助您编写一些代码以将其保存给您的应用程序上的注册用户。

关于php - Zend 框架 2 - 如何制作语言切换器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24956272/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com