通过显式本地化获取资源价值

时间:2011-04-01 13:17:09

标签: c# asp.net-mvc-2 localization

使用不同的资源文件(* .resx),如何通过提供显式本地化来检索本地化值。

也就是说,通常我可以使用custom-tool-namespace.Resource.localizedAttribute直接引用该属性。

它将给出的值取决于为CurrentCulture设置的本地化(线程方式)。但与此不同的是,我想将本地化交给资源获取者。这可能吗?

2 个答案:

答案 0 :(得分:24)

假设您有多个资源文件:

Messages.resx
Messages.fr-FR.resx
...
Messages.xx-XX.resx

包含一些字符串值,您可以检索特定文化的值:

var culture = new CultureInfo("fr-FR");
string value = Messages.ResourceManager.GetString("SomeKey", culture);

,这将与当前线程文化的价值无关。

答案 1 :(得分:0)

更好的做法是使用 nameof 来保持智能感知并避免键入错误

$resource = $this->pohodaDatabase->query(
            "SELECT S.IDS, S.RefStruct, ISNULL(S.StavZ - S.ObjedP, 0) AS quantity
            FROM SKz S
            WHERE S.IDS IN ('092COž01', '00XXž004', '041SE010-0240')" . $where
        );

        $productStocksDataWrapper = array();
        var_dump($this->pohodaDatabase->rows($resource));  // int(0)
        var_dump($this->pohodaDatabase->getLastQuery()); //SELECT S.IDS,S.RefStruct, ISNULL(S.StavZ - S.ObjedP, 0) AS quantity
            FROM SKz S
            WHERE S.IDS IN ('092COž01', '00XXž004', '041SE010-0240') //
        while ($row = $this->pohodaDatabase->fetch_assoc($resource)) {
            var_dump($row); // only 041SE010-0240
            $productStocksData = new PohodaProductStocksData();
            $productStocksData
                ->setCatnum($row['IDS'])
                ->setPohodaWarhouseExtId($row['RefStruct'])
                ->setQuantity($row['quantity']);

            $productStocksDataWrapper[] = $productStocksData;
        }

        var_dump($productStocksDataWrapper); // just 041SE010-0240
        die();