热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

zfphp,phpZF语言和翻译

我需要一个很好的语言示例,并在ZF中进行翻译.我的需求如下:如果未选择lang,则应默认为“en”.(在页面顶部,有一个lang选择器.)lang应该存储在会话中.翻

我需要一个很好的语言示例,并在ZF中进行翻译.

我的需求如下:

如果未选择lang,则应默认为“ en”. (在页面顶部,有一个lang选择器.)

lang应该存储在会话中.

翻译应通过csv文件完成.

我想让该语言在url中不可见,因此,如果可能的话,我不需要重新配置路由.

我找到了一些教程,但是它们对我来说并不是很有效.

任何帮助将不胜感激…

问候

安德里亚

解决方法:

我用这种方法使用数组而不是csv:

application / configs / application.ini

; plugins stuff

pluginPaths.Zle_Application_Resource = "Zle/Application/Resource"

; locale stuff

resources.locale.default = "it_IT"

; cachemanager settings TODO change cache adapter to memcache

resources.cachemanager.translator.frontend.name = Core

resources.cachemanager.translator.frontend.customFrontendNaming = false

resources.cachemanager.translator.frontend.options.lifetime = 7200

resources.cachemanager.translator.frontend.options.automatic_serialization = true

resources.cachemanager.translator.backend.name = File

resources.cachemanager.translator.backend.customBackendNaming = false

resources.cachemanager.translator.backend.options.cache_dir = APPLICATION_PATH "/../data/cache"

resources.cachemanager.translator.frontendBackendAutoload = false

; translation stuff

resources.translate.data = APPLICATION_PATH "/../data/locales"

resources.translate.options.disableNotices = 1

resources.translate.options.scan = 'directory'

resources.translate.log.stream.writerName = "Stream"

resources.translate.log.stream.writerParams.stream = APPLICATION_PATH "/../data/logs/untranslated.log"

resources.translate.log.stream.writerParams.mode = "a"

resources.translate.cacheEnabled = true

; view stuff

resources.view.encoding = "UTF-8"

resources.view.helperPath.My_View_Helper = "My/View/Helper"

应用程序/插件/Language.php

class Plugin_Language extends Zend_Controller_Plugin_Abstract

{

/**

* @var string session namespace

*/

const SESSION_NS = 'Plugin_Language';

/**

* @var string default language for other users

*/

const DEFAULT_LOCALE = 'it';

/**

* Called before Zend_Controller_Front enters its dispatch loop.

*

* @param Zend_Controller_Request_Abstract $request

* @return void

*/

public function dispatchLoopStartup(Zend_Controller_Request_Abstract $request)

{

$session = new Zend_Session_Namespace(self::SESSION_NS);

if (isset($session->language) && Zend_Locale::isLocale($session->language)) {

// change locale for the application

$locale = new Zend_Locale($session->language);

Zend_Registry::set(

Zend_Application_Resource_Locale::DEFAULT_REGISTRY_KEY,

$locale

);

// change language for the translator

Zend_Registry::get('Zend_Translate')->setLocale($locale);

} else {

/** @var $locale Zend_Locale */

$locale = Zend_Registry::get('Zend_Locale');

/** @var $translate Zend_Translate */

$translate = Zend_Registry::get('Zend_Translate');

// check if user language is translated

if (!in_array($locale->getLanguage(), $translate->getList())) {

// change language for the translator

$translate->setLocale(self::DEFAULT_LOCALE);

}

}

}

}

应用程序/Bootrasp.php

protected function _initAutoload()

{

$autoloader = new Zend_Application_Module_Autoloader(array('namespace' => '', 'basePath' => APPLICATION_PATH));

$autoloader->addResourceType('plugin', 'plugins', 'Plugin');

return $autoloader;

}

应用程序/控制器/ LocaleController.php

class LocaleController extends Zend_Controller_Action

{

/**

* @var Zend_Session_Namespace

*/

protected $session;

public function init()

{

$this->session = new Zend_Session_Namespace(

Plugin_Language::SESSION_NS

);

}

public function itAction()

{

$this->session->language = 'it_IT';

$this->_redirect($_SERVER['HTTP_REFERER']);

}

public function enAction()

{

$this->session->language = 'en_US';

$this->_redirect($_SERVER['HTTP_REFERER']);

}

}

库/我的/应用程序/资源/Translate.php

class My_Application_Resource_Translate extends Zend_Application_Resource_Translate

{

/**

* Default key for cache manager

*/

const DEFAULT_CACHE_KEY = 'translator';

/**

* Build a log object used internally by parent class

*

* @return void

*/

protected function buildLog()

{

if (isset($this->_options['log'])) {

if (is_array($this->_options['log'])) {

$this->_options['log'] = Zend_Log::factory($this->_options['log']);

} else {

unset($this->_options['log']);

}

}

}

/**

* Return string used for cache manager

*

* @return string the key used for cache manager

*/

protected function getCacheKey()

{

return isset($this->_options['cacheKey'])

? $this->_options['cacheKey']

: self::DEFAULT_CACHE_KEY;

}

/**

* Retrieve translate object

*

* @throws Zend_Application_Resource_Exception if registry key was used

* already but is no instance of Zend_Translate

* @return Zend_Translate

*/

public function getTranslate()

{

if (null === $this->_translate) {

$this->buildLog();

// retrieve cache if requested

if (isset($this->_options['cacheEnabled'])

&& $this->_options['cacheEnabled']

) {

// check for cachemanager in bootstrap

if (!$this->getBootstrap()->hasPluginResource('cachemanager')) {

throw new Zend_Application_Resource_Exception(

"You must configure the cachemanager with "

. "the key {$this->getCacheKey()}"

);

}

// bootstrap the cachemanager and retrieve it

/** @var $cacheManager Zend_Cache_Manager */

$cacheManager = $this->getBootstrap()

->bootstrap('cachemanager')

->getResource('cachemanager');

// check for the given key

if (!$cacheManager->hasCache($this->getCacheKey())) {

throw new Zend_Application_Resource_Exception(

"You must configure the cachemanager with "

. "the key {$this->getCacheKey()}"

);

}

// set cache for translator

Zend_Translate_Adapter::setCache(

$cacheManager->getCache($this->getCacheKey())

);

}

// fetch translate object into local variable

$this->_translate = parent::getTranslate();

}

return $this->_translate;

}

}

我创建此目录:

/data/cache

/data/locales

/data/locales/it

/data/locales/en

/data/locales/logs

/data/locales/zh-CN/Foo.php

/**

* Return Array Key => Translate EN

*

*/

return array(

'SEND' => 'Send',

'SAVE' => 'Save',

'EDIT' => 'Edit',

);

/data/locales/it/Foo.php

/**

* Return Array Key => Translate IT

*

*/

return array(

'SEND' => 'Invia',

'SAVE' => 'Salva',

'EDIT' => 'Modifica',

);

libray /我的/View/Helper/T.php

class Zle_View_Helper_T extends Zend_View_Helper_Translate

{

/**

* Shortcut helper to Zend_View_Helper_Translate

* You can give multiple params or an array of params.

* If you want to output another locale just set it as last single parameter

* Example 1: translate('%1\$s + %2\$s', $value1, $value2, $locale);

* Example 2: translate('%1\$s + %2\$s', array($value1, $value2), $locale);

*

* @param string $messageid Id of the message to be translated

*

* @return string|Zend_View_Helper_Translate Translated message

*/

public function t($messageid = null)

{

// TODO replace with php 5.3

$arguments = func_get_args();

return call_user_func_array(array($this, 'translate'), $arguments);

}

}

最后使用以下翻译:

鉴于:

=$this->t('SEND')?>:

通知:

$this->addElement('submit', 'submit', array('label' => 'SAVE'));

有更好的方法,我已经描述了我的!

我希望退房非常有帮助!

标签:zend-framework,php,zend-translate

来源: https://codeday.me/bug/20191202/2085245.html



推荐阅读
  • 本文详细介绍如何使用Python进行配置文件的读写操作,涵盖常见的配置文件格式(如INI、JSON、TOML和YAML),并提供具体的代码示例。 ... [详细]
  • 本文将介绍如何编写一些有趣的VBScript脚本,这些脚本可以在朋友之间进行无害的恶作剧。通过简单的代码示例,帮助您了解VBScript的基本语法和功能。 ... [详细]
  • PyCharm下载与安装指南
    本文详细介绍如何从官方渠道下载并安装PyCharm集成开发环境(IDE),涵盖Windows、macOS和Linux系统,同时提供详细的安装步骤及配置建议。 ... [详细]
  • CentOS7源码编译安装MySQL5.6
    2019独角兽企业重金招聘Python工程师标准一、先在cmake官网下个最新的cmake源码包cmake官网:https:www.cmake.org如此时最新 ... [详细]
  • 本文详细介绍了Java编程语言中的核心概念和常见面试问题,包括集合类、数据结构、线程处理、Java虚拟机(JVM)、HTTP协议以及Git操作等方面的内容。通过深入分析每个主题,帮助读者更好地理解Java的关键特性和最佳实践。 ... [详细]
  • UNP 第9章:主机名与地址转换
    本章探讨了用于在主机名和数值地址之间进行转换的函数,如gethostbyname和gethostbyaddr。此外,还介绍了getservbyname和getservbyport函数,用于在服务器名和端口号之间进行转换。 ... [详细]
  • 如何在PHPCMS V9中实现多站点功能并配置独立域名与动态URL
    本文介绍如何在PHPCMS V9中创建和管理多个站点,包括配置独立域名、设置动态URL,并确保各子站能够正常运行。我们将详细讲解从新建站点到最终配置路由的每一步骤。 ... [详细]
  • 2023年京东Android面试真题解析与经验分享
    本文由一位拥有6年Android开发经验的工程师撰写,详细解析了京东面试中常见的技术问题。涵盖引用传递、Handler机制、ListView优化、多线程控制及ANR处理等核心知识点。 ... [详细]
  • 本文详细介绍了Java中org.neo4j.helpers.collection.Iterators.single()方法的功能、使用场景及代码示例,帮助开发者更好地理解和应用该方法。 ... [详细]
  • 1.如何在运行状态查看源代码?查看函数的源代码,我们通常会使用IDE来完成。比如在PyCharm中,你可以Ctrl+鼠标点击进入函数的源代码。那如果没有IDE呢?当我们想使用一个函 ... [详细]
  • 数据管理权威指南:《DAMA-DMBOK2 数据管理知识体系》
    本书提供了全面的数据管理职能、术语和最佳实践方法的标准行业解释,构建了数据管理的总体框架,为数据管理的发展奠定了坚实的理论基础。适合各类数据管理专业人士和相关领域的从业人员。 ... [详细]
  • 本文详细介绍了 Dockerfile 的编写方法及其在网络配置中的应用,涵盖基础指令、镜像构建与发布流程,并深入探讨了 Docker 的默认网络、容器互联及自定义网络的实现。 ... [详细]
  • 本文介绍了如何使用JQuery实现省市二级联动和表单验证。首先,通过change事件监听用户选择的省份,并动态加载对应的城市列表。其次,详细讲解了使用Validation插件进行表单验证的方法,包括内置规则、自定义规则及实时验证功能。 ... [详细]
  • 本文深入探讨了 Java 中的 Serializable 接口,解释了其实现机制、用途及注意事项,帮助开发者更好地理解和使用序列化功能。 ... [详细]
  • 本文详细介绍了如何构建一个高效的UI管理系统,集中处理UI页面的打开、关闭、层级管理和页面跳转等问题。通过UIManager统一管理外部切换逻辑,实现功能逻辑分散化和代码复用,支持多人协作开发。 ... [详细]
author-avatar
大华出入境
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有