Как использовать включение псевдо-локали в Windows для тестирования? - PullRequest
19 голосов
/ 12 августа 2011

Windows Vista представила концепцию трех псевдо-локалей :

Pseudo Locale        Locale Name  LCID           
===================  ===========  ======
Base                 qps-ploc     0x0501
Mirrored             qps-mirr     0x09ff
East Asian-language  qps-asia     0x05fe

Включение Base языкового стандарта полезно, поскольку вы можете проверить, использует ли ваше приложение текущий языковой стандарт для форматирования элементов, таких как даты, время, числа, деньги.

Например, если текущая локаль установлена ​​на База , дата будет отформатирована как:

[Штеđлеśđαỳ !!!], 8 ōf [ŕςћäŕςћ !!] ōf 2006

Сборки Windows фактически выполняются в псевдо , а затем локализуются на английский:

enter image description here

Другое значение в использовании этих локалей: оно проверяет, что ваше приложение не предполагает, что 16-битное PRIMARYLANGID состоит из:

  • 8-битный идентификатор основного языка
  • 8-битный идентификатор подъязыка

когда в действительности PRIMARYLANGID равен :

  • 10-битный идентификатор основного языка
  • 6-битный идентификатор подъязыка

или графически:

+-----------------------+-------------------------+
|     Sublanguage ID    |   Primary Language ID   |
+-----------------------+-------------------------+
 15                   10 9                       0   bit

Эти три псевдо-локали, наконец, уходят с конца 8-го бита (то, что Microsoft устала делать для взлома ошибочных приложений).

Как включить псевдо-локаль в Windows?

Смотри также

Ответы [ 3 ]

22 голосов
/ 12 августа 2011

Как включить псевдо-локаль в Windows?

Изначально четыре псевдо-локали не отображаются на панели управления : ( archive.org )

Обратите внимание, что NLS не автоматически перечисляет псевдо-локали и не отображает их в разделе региональных и языковых параметров панели управления. Они перечисляются только в том случае, если значения заданы в реестре.

Вы включаете их, добавляя некоторые ключи реестра:

[HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Nls\Locale]
"00000501"="1" // qps-ploc (Windows Vista and later)
"000005fe"="7" // qps-ploca (Windows Vista and later)
"00000901"="1" // qps-Latn-x-sh (Windows 10 and later)
"000009ff"="d" // qps-plocm (Windows Vista and later)

Что можно сделать в RegEdit:

enter image description here

Затем вы можете перейти к Региональные и языковые параметры на панели управления:

enter image description here

и выберите псевдо-локаль:

enter image description here

Три различных псевдо-локали предназначены для тестирования 3 видов локалей:

База Локаль qps-ploc используется для псевдокализаций, подобных английскому. Его строки - более длинные версии английских строк, использующие нелатинские и акцентированные символы вместо обычного сценария. Кроме того, простые латинские строки должны сортироваться в обратном порядке с этим языком.

Зеркальный qpa-mirr используется для псевдоданных справа налево, что является еще одной областью интереса для тестирования.

Восточная Азия qps-asia предназначена для использования большого репертуара символов CJK, что также полезно для тестирования.


Предупреждение: Не не попробуйте изменить «Системный языковой стандарт» :

enter image description here

в новую псевдо-локаль:

enter image description here

В противном случае после перезагрузки:

enter image description here

Windows не запустится:

enter image description here

И единственным исправлением будет ручное редактирование реестра из консоли восстановления ; восстановление старого en-US языка.


Внимание

Использование псевдо-локалей используется для поиска ошибок локализации в программном обеспечении. К сожалению, это также позволит вам находить ошибки в чужих программах; в том числе Microsoft:

  • SQL Server Management Studio 1 аварийно завершает работу при отображении в других локалях ( Microsoft Connect ):

    enter image description here
    enter image description here enter image description here

  • Microsoft Excel больше не позволяет вводить функции ( запятая , используемая для разделения параметров, больше не работает)

  • Visual Studio больше не позволяет редактировать свойства, разделенные запятыми

  • Конструктор диаграмм SQL Server Management Studio сообщает об ошибке

  • .NET имеет ошибку в форматировании даты и времени, показывая 22////11////2011 4::::42::::53 P̰̃M]

  • Просмотр событий Windows:

    enter image description here

  • Планировщик заданий:

    enter image description here

  • SQL Server Management Studio:

    enter image description here

Удачи в том, чтобы заставить Microsoft готовить собачий продукт для собственного продукта.

1 10.50.1617.0


Обновление 4 // 10/2012:

Попытка Редактирование 200 верхних строк таблицы в SQL Server Management Studio:

enter image description here

Выполненная инструкция SQL SELECT TOP (200) ...
Источник ошибки: Microsoft.SqlServer.Management.DataTools
Сообщение об ошибке: ссылка на объект не установлена ​​для экземпляра объекта

Исправлено путем изменения Символ отрицательного знака с -- на -.

Чтение бонусов

5 голосов
/ 06 октября 2011

Вы также можете изменить Accept-Languages Internet Explorer для запроса qps-ploc языка:

enter image description here

Вы можете использовать это, чтобы проверить, что ваш веб-сайт поддерживает psuedo-locale,и проверьте все пропущенные локализации:

enter image description here

Вы можете видеть, что я пропустил два бита текста на этом примере веб-сайта.

2 голосов
/ 09 августа 2015

Похоже, вместо исправления ошибок локализации в .NET, SQL Server, Excel и т. Д. Microsoft изменила псевдо-локаль в Windows 10, чтобы скрыть ошибки:

| Item                  | Windows 7                | Windows 10            |
|-----------------------|--------------------------|-----------------------|
| Locale Identifier     | 0x0501 (1281)            | 0x0501 (1281)         |
| Locale Name           | qps-ploc                 | qps-ploc              |
| Example Number        | --123,,4567,,8901        | -123,,4567,,8901      |
| Example Currency      | --$$123,,4567,,8901..00  | -$123,,4567,,8901.000 |
| Example Float         | --123,,4567,,8901..00    | -123,,4567,,8901.000  |
| Example Date          | 9//08//2015              | 9/8/2015              |
| Example Time          | 9::51::17 АΜ             | 9:45:09               |
| Example DateTime      | 9//08//2015 9::51::17 АΜ | 9/8/2015 9:45         |
| LOCALE_SLANGUAGE      | Pseudo Language (Pseudo) | Pseudo (Pseudo)       |
| LOCALE_SENGLANGUAGE   | Pseudo Language          | Pseudo                |
| LOCALE_SDECIMAL       | ..                       | .                     |
| LOCALE_SCURRENCY      | $$                       | $                     |
| LOCALE_SMONDECIMALSEP | ..                       | .                     |
| LOCALE_SDATE          | //                       | /                     |
| LOCALE_STIME          | ::                       | :                     |
| LOCALE_SSHORTDATE     | d//MM//yyyy              | d/MM/yy               |
| LOCALE_STIMEFORMAT    | h::mm::ss tt             | H:mm:ss               |
| LOCALE_ITIME          | 0                        | 1                     |
| LOCALE_ICENTURY       | 1                        | 0                     |
| LOCALE_SNEGATIVESIGN  | --                       | -                     |

Я понимаю, что не хочу исправлять ваши ошибки, потому что вы ленивы, это слишком сложно. Но вы должны были быть вынуждены носить свой позор, чтобы все видели.

Вместо этого вы отказываетесь и пытаетесь скрыть свою неудачу. Это просто плохо.

...