SMARTY - stemmings - 产品数量(Prestashop)

时间:2011-11-14 19:51:43

标签: php numbers smarty prestashop

我遇到了以下问题。我在Prestashop CMS中开店,它使用Smarty模板引擎。所以有一句话,显示了许多产品。现在 - 用英语语言很简单 - 你可以这样做:

{l s='Cart contains'} {$productNumber} {if $productNumber == 1}{l s='product'}{else}{l s='products'}{/if}

但是这家商店是用波兰语制作的 - 并且开始出现问题。它要复杂得多。就像这样:

  1. 对于1个产品,您只有一个词 - “produkt”
  2. 2,3和4种产品以及包含这些产品的每个数字 数字(如22,23,24,32,33,34,152,153,154,242,243,244等) 另一个词 - “produkty”
  3. 对于4以上的所有内容(第2点中的数字除外)为第三 字 - “produktów”
  4. 那么 - 如何为此写一个聪明的条件?

    由于

1 个答案:

答案 0 :(得分:1)

我想说这里所需的逻辑足够冗长,并且可能足够重用以保证插件。

function smarty_modifier_nb_products_to_str($nbProducts){
   if($nbProducts > 1){
      $numbers = str_split((string) $nbProducts);
      return count(array_intersect($numbers, array('2','3','4'))
        ? 'produkty'
        : 'produktów';
   } else {
     return 'produkt';
   }
}

使用方式如下:

{l s='Cart contains'} {nb_products_to_str($productNumber)}