1

我最近遇到了一个非常有趣的问题。我在网站上有以下代码来生成一个由 10 位数字组成的数字,后跟一个句点 (.),然后是 2 到 4 位数字。我还使用 gettext 函数将页面翻译成其他 2 种不同的语言

<?php
      $lang = "en_UK";
      putenv("LC_ALL=$lang");
      setlocale(LC_ALL, $lang);
      bindtextdomain("messages", "locale");
      bind_textdomain_codeset('messages', 'UTF-8');
      textdomain("messages");

      list($usec, $sec) = explode(" ",microtime());
      $my_number = ((float)$usec + (float)$sec + (float)rand(1, 100000000));
?>
      <form method ="POST" action="">
          <input type="hidden" value="<?php echo $my_number; ?>"/>
          <input type="submit"/>
      </form>

到目前为止,一切都很好。当$lang等于en_UK时,我得到了我需要的东西(1234567891.1234)。

但如果$lang等于it_ITde_DE,则将$my_number格式更改为 10 位数字,后跟一个COMMA,然后是 2 到 4 位数字 (1234567891,1234)。

有人现在为什么会发生这种情况???非常感谢 :)

4

1 回答 1

1

不同的国家对如何写数字有不同的约定。setlocale更改您的程序使用的约定。

于 2013-05-28T19:26:49.220 回答