Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typo3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
TYPO3打字脚本:带有参数的语言文件_Typo3_Typoscript_Typo3 6.2.x - Fatal编程技术网

TYPO3打字脚本:带有参数的语言文件

TYPO3打字脚本:带有参数的语言文件,typo3,typoscript,typo3-6.2.x,Typo3,Typoscript,Typo3 6.2.x,如何在TypoScript中呈现带有参数的locallang键?用一个值替换%s <trans-unit id="author"> <source>created by %s</source> </trans-unit> ===== 通过UserFunc的解决方案1: page.10 = USER_INT page.10 { userFunc = FluidTranslate->main extensionName

如何在TypoScript中呈现带有参数的locallang键?用一个值替换%s

<trans-unit id="author">
    <source>created by %s</source>
</trans-unit>
===== 通过UserFunc的解决方案1:

page.10 = USER_INT
page.10 {
    userFunc = FluidTranslate->main
    extensionName = my_ext
    key = tx_myext_domain_model_mymodel.author
    arguments.0 = Me
}
PHP:

<?php
class FluidTranslate
{
  public function main($content, $conf)
  {
    $extensionName = $conf['extensionName'];
    $key = $conf['key'];
    $arguments = $conf['arguments.'];

    $value = \TYPO3\CMS\Extbase\Utility\LocalizationUtility::translate($key, $extensionName, $arguments);
    return $value;
  }
}

我认为这在文本对象中还不可能,因为为了解析LLL:from TS,使用了TypoScriptFrotnendController->sL方法


但是,您可以使用user对象调用user函数,并使用LocalizationUtility::translate在其中获取标签,您可以在其中传递参数。

我认为这在TEXT对象中还不可能,因为要从TS解析LLL:from,需要使用TypoScriptFrotnendController->sL方法


但是,您可以使用user对象调用用户函数,并使用LocalizationUtility::translate在其中获取标签,您可以在其中传递参数。

如果您的问题只是%s部分,则可以使用stdwrap.replacement来处理该问题:

  stdWrap.replacement {
    10 {
      search = %s
      replace = Me
    }
  }

请参见

如果您的问题只是%s部分,则可以使用stdwrap.replacement来处理该问题:

  stdWrap.replacement {
    10 {
      search = %s
      replace = Me
    }
  }

请参见流体模板支持这些标记sprintf样式,因为TranslateViewWhelper调用Localization实用程序,该实用程序在解析的LLL上调用vsprintf

但是,目前无法通过打字脚本进行相同的处理。虽然从技术上讲,它可以作为一种新型的stdWrap函数添加。在此之前,这个特性是以一种允许调用任何PHP函数的形式提出的,但由于安全问题以及与TYPO3中的原始PHP相比,TypoScript开发人员是二等公民的事实,它被合理地拒绝了

也就是说,您可以使用一个立即可用的选项将行为复制为stdWrap:

在$GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['tslib/class.tslib_content.php']['stdWrap']它允许您注册一个类名,该类名实现\TYPO3\CMS\Frontend\ContentObject\ContentObjectStdWrapHookInterface,可在特殊stdWrap配置上触发该接口,并在解析LLL值后对其执行sprintf或vsprintf调用


另一方面,如果你完成了这样一个功能,建议/贡献给TYPO3将是非常有意义的。在我看来,这是一个合理的功能要求

流体模板支持这些sprintf样式,因为TranslateViewWhelper调用LocalizationUtility,该实用程序在解析的LLL上调用vsprintf

但是,目前无法通过打字脚本进行相同的处理。虽然从技术上讲,它可以作为一种新型的stdWrap函数添加。在此之前,这个特性是以一种允许调用任何PHP函数的形式提出的,但由于安全问题以及与TYPO3中的原始PHP相比,TypoScript开发人员是二等公民的事实,它被合理地拒绝了

也就是说,您可以使用一个立即可用的选项将行为复制为stdWrap:

在$GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['tslib/class.tslib_content.php']['stdWrap']它允许您注册一个类名,该类名实现\TYPO3\CMS\Frontend\ContentObject\ContentObjectStdWrapHookInterface,可在特殊stdWrap配置上触发该接口,并在解析LLL值后对其执行sprintf或vsprintf调用


另一方面,如果你完成了这样一个功能,建议/贡献给TYPO3将是非常有意义的。在我看来,这是一个合理的功能要求

由于我目前正在使用TYPO3 CMS 6.2.x,userFunc为我工作。 我扩展了打字脚本,因为我需要根据内容和选择对动态值做出反应

打字稿:

page.99 = CONTENT
page.99 {
  table = tt_content
  select {
    uidInList = 484
    pidInList = 156
  }
  selectFields = uid

  renderObj = COA
  renderObj {

    10 = USER
    10 {
        userFunc = FluidTranslate->main
        extensionName = my_ext
        key = tx_myext_domain_model_mymodelname.langkey
        fields.0 = uid
    }
  }
}
用户功能:

<?php

class FluidTranslate
{

    /**
     * @var \TYPO3\CMS\Frontend\ContentObject\ContentObjectRenderer
     */
    public $cObj = null;

    public function main($content, $conf)
    {
        $extensionName = $conf['extensionName'];
        $key = $conf['key'];
        $arguments = array();
        $fields = $conf['fields.'];

        foreach ($fields as $field) {
            $arguments[] = $this->cObj->data[$field];
        }


        $value = \TYPO3\CMS\Extbase\Utility\LocalizationUtility::translate($key, $extensionName, $arguments);
        return $value;
    }
}

由于我目前正在使用TYPO3 CMS 6.2.x,userFunc为我工作。 我扩展了打字脚本,因为我需要根据内容和选择对动态值做出反应

打字稿:

page.99 = CONTENT
page.99 {
  table = tt_content
  select {
    uidInList = 484
    pidInList = 156
  }
  selectFields = uid

  renderObj = COA
  renderObj {

    10 = USER
    10 {
        userFunc = FluidTranslate->main
        extensionName = my_ext
        key = tx_myext_domain_model_mymodelname.langkey
        fields.0 = uid
    }
  }
}
用户功能:

<?php

class FluidTranslate
{

    /**
     * @var \TYPO3\CMS\Frontend\ContentObject\ContentObjectRenderer
     */
    public $cObj = null;

    public function main($content, $conf)
    {
        $extensionName = $conf['extensionName'];
        $key = $conf['key'];
        $arguments = array();
        $fields = $conf['fields.'];

        foreach ($fields as $field) {
            $arguments[] = $this->cObj->data[$field];
        }


        $value = \TYPO3\CMS\Extbase\Utility\LocalizationUtility::translate($key, $extensionName, $arguments);
        return $value;
    }
}

将COA_INT切换到COA或将USER_INT切换到USER,甚至删除COA_INT并直接使用USER_INT以获得更好的性能并删除不需要的线路另一个方法是将COA_INT切换到COA或将USER_INT切换到USER,甚至删除COA_INT并直接使用USER_INT以获得更好的性能并删除不需要的线路