0

我有以下问题。我在 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 回答 1

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)}
于 2011-11-14T20:21:36.103 回答