Notes on comments.
Welcome to our blog dedicated to the engineering of Microsoft Windows 7
Microsoft has been a global software company for a long time and has always put a lot of effort into engineering our products for a global customer base. It is also an area where the engineering is complex—probably a lot more complex than many might think—and one where we are always trying to learn and improve. Building global software is a responsibility for everyone on the team. We also have feature teams dedicated to developing both global and market specific features—whether it is font handling or doing East Asian language input as two examples. We of course have a significant engineering effort that goes into localizing (“translating” is not quite accurate) Windows into nearly 100 languages. Julie Bennett represents the global development and localization teams and she and John McConnell on her team collaborated across the team to author this post that provides an overview of engineering for a global market. --Steven
Many of the readers of the e7 blog are located outside of the United States or speak a language other than English, so we thought it would be useful to share the international and multi-lingual improvements in Windows 7. Our goal for Windows 7 is to deliver exciting features that benefit users worldwide as well as features that make Windows feel local to every user. Like Windows 7's focus to improve the fundamental scenarios of performance and reliability, we improved our processes to allow us to deliver a great customer experience in every language and every country we serve, including delivery of Windows 7 as close to simultaneously as possible worldwide. This blog entry discusses some of the new features and improved processes that we believe make Windows 7 a great worldwide release.
The international features of Windows 7 are pervasive across the system, from such low-level aspects as the supported characters in NTFS file names (now upgraded to match Unicode 5.1) to such high-level aspects as the selection of backgrounds and themes (now including locally-relevant photos). But there are certain features which are intrinsically critical for proper support of the world’s many languages and cultures, and we will describe some of those here.
Language and writing are at the heart of any culture and thus support for fonts is essential to supporting international users. Windows 7 significantly increases both the range and quality of fonts. We have added fifty new fonts:
As you might guess from the font names in the above table, many of the new fonts are for non-Latin scripts. In fact, Windows 7 will be the first version of Windows to ship with more fonts for non-Latin scripts than for Latin-based scripts. One major area of improvement is for the languages of India. To the nine (9) fonts for Indian languages that shipped in Vista, Windows 7 adds forty (40) more. Windows 7 will now include multiple fonts (often in multiple weights) for each of the official languages of India.
Aparajita: A New Devanagari Font in Regular, Bold, Italic and Bold-Italic
Besides new fonts, we have also improved many of the existing fonts. For example, we have added over two thousand (2,000) glyphs to Consolas, Calibri, Cambria Bold, and Cambria Math. But the most dramatic improvements have been to some of the non-Latin scripts. For example, Windows 7 does a much better job rendering the common Lam-Alef ligature in Arabic (see the illustration below) and in the placement of vowel marks.
Left: Lam-Alef Ligture in Vista Right: Lam-Alef Ligature in Windows 7
Changes to fonts (even clear improvements) are always tricky because of backwards compatibility issues. For example, if a character changes width or position, it may cause existing documents to reflow (repaginate), which is unacceptable. Therefore, whenever we change a font, we must run extensive verification tests against the changes to ensure the font metrics and other tables are unchanged. In the case of the Lam-Alef fix shown above, we discovered that there were existing applications that relied on the (undocumented) order of the glyphs within the old font. These applications would break if we simply replaced the glyphs. The font team worked closely with the international application compatibility team to ensure that changes we made did not affect the order of glyphs within the font, thus providing backward compatibility.
With so many new and expanded fonts for Windows 7, we also wanted to help users manage their fonts more easily. For the first time in years, we have done a complete overhaul of the font control panel.
The first picture below shows the font control panel with the large icon view. The most obvious change is that the font icons now convey much more information about the appearance of the font. The content of the icon gives a hint as to the glyph repertoire of the font. The style of the icon matches the style of the font. Non-Latin fonts show typical glyphs from the script for the font to see how it is designed. A more subtle change is that some font icons are faded to indicate fonts that are installed, but hidden. Hidden fonts will not show by default in the ribbon and font dialogs. Users can now use the font control panel to tune the fonts that they regularly use. By hiding fonts they never use, users can simplify choosing the correct font within applications. By default, only fonts supporting languages that can be written with the users installed input locales (keyboard layout plus language) will be shown. For example, users with English and French input locales will see only the Latin fonts, whereas users with the Japanese input method installed will see only the Japanese fonts. Users can override these defaults by right-clicking on any of the fonts in the control panel. Hidden fonts are still installed so an existing application that uses a hidden font will behave identically.
Font Control Panel with Large Icon View
The next picture below shows the font control panel with the detailed view. Now users can see much more information about the font. For example, the user can sort fonts by style, whether they are hidden, and information about the creator of the font. Font files generally contain information only in the design language of the font (e.g. a Japanese font might contain only information in Japanese). In Windows 7, we needed a solution that would work for all languages and for all fonts, so we created a hybrid approach that combines information from the font itself with metadata (an XML file that provides the information about the fonts on the system).
Font Control Panel with Detail View
Windows 7 has increased opportunities for personalization. New themes, backgrounds, and sounds make it easy to customize Windows 7 to match your personality. To the extent that our preferences are influenced by our language and location, Windows 7 reflects this with the introduction of Local Packs. Local Packs provide customized Windows 7 visual themes for a specific region. These visual themes contain locally relevant wallpaper images, custom aero glass colors, and regional sound schemes. Windows® Internet Explorer® Favorites and RSS feeds may also be updated when the Local Pack is activated on an end user’s computer. For example, adding and enabling the Local Pack for France will add a market-customized theme for France to the end user’s Personalization control panel and a number of links to useful French Public Sector websites and RSS Feeds to the user’s profile.
Customized Themes in the Personalization control panel
The Local Pack content provides users with seamless local experiences right out of the box. Users are never exposed to Local Packs per se, they just select their Location as normal during Windows Welcome, and appropriate local content is exposed to them based on that setting.
Users looking for visual themes for other countries, or indeed any other areas of interest, can find them on the Windows Online Gallery, which is accessible via the “Get more themes online” link in the Personalization control panel.
Other new features include five (5) new locales (bringing the total number of locales supported to two hundred and ten (210)), twelve (12) new input locales, and improvements to sorting for traditional Chinese characters. Also, we have generally updated our system databases to the latest version of the Unicode Standard (5.1). There are also interface improvements that should allow developers to create better globalized applications. Extended Linguistic Services (ELS) is a cool new feature we describe below in the International Timeliness and Quality section.
Perhaps one of the most important improvements outside the core international features has been in Search, which now recognizes more languages. For example, Windows 7 desktop search now recognizes Russian morphology (the rules for single and plural, tenses, and case). This means that searches for a particular word in Russian will now match not only that exact word, but also the common variations of the word, yielding significantly better results.
In previous versions of Windows, final delivery of every language to every market took several months. For Windows 7, we changed how we worked on international releases to significantly shorten this delta so that all users worldwide can enjoy Windows as simultaneously as possible. This goal had far reaching implications on how we perform our work as engineers and on how we interact with partners and customers during our public testing phases.
To understand our approach, we should first explain two important concepts: localization and globalization.
Localization is the process of adapting the user experience into another language. Beyond the translation of strings, it can also include activities such as resizing dialogs and mirroring icons for right-to-left languages, such as Hebrew and Arabic. Localization bugs, such as the mistranslation of a menu item, are defects introduced during this process.
Globalization, on the other hand, is the process of producing a product that works well in every country no matter the user interface language setting. A globalization bug may be as simple as showing a UI element in the wrong language and as complex as not properly handling right-to-left scripts. Globalization bugs are inherently more serious than localization bugs as they usually affect many or all languages and often require re-thinking the technical design. In past Windows releases, repairing globalization bugs contributed to the necessity of the long release deltas. For Windows 7 we worked to prevent, find, and fix globalization bugs as early in the development process as possible.
To prevent common globalization bugs, pseudo-localized builds were created. Pseudo-localization is a process that creates a localized product in an artificial language. That language is identical to English except that each character is written with a different character that visually resembles the English character. Except for being entirely machine generated, we create the pseudo-localized builds exactly the same way as we create the localized builds. Because even monolingual US software developers can read pseudo-localized text, it has proven to be an excellent way to find globalization problems early in the development cycle. In the Windows 7 beta, some UI elements were still in their pseudo-localized form, causing some interesting theories about what the meaning might be. We hope we have solved the mystery with this blog post. :-)
Control Panel Dialog in Pseudo-localized Windows 7
Beta is always an exciting time for us as it is our first real chance to hear from you about our efforts. We are thrilled that people from over one hundred and thirteen (113) countries downloaded the Windows 7 Beta. With such a large and diverse beta program, we must have highly scalable processes to gather and incorporate your feedback. In Windows 7, we are very excited about some new approaches we took here.
In the past, localization languages for Windows beta releases were selected for a mix of pragmatic reasons. While this ad hoc approach had benefits, too often we found that serious globalization defects were not reported because they did not manifest in the chosen languages. For the Windows 7 Beta, our priority was to find globalization bugs and therefore we have concentrated on four languages (plus English) that experience has shown are most likely to find specific types of defects:
By concentrating on these four languages during Beta, we maximized our chances to find and fix the globalization bugs that affect many languages. This in turn gave us more time to improve the localization of all languages before we release the actual product. The pictures below show two bugs found during Beta that illustrate the advantages of focusing on these pilot languages.
Globalization Defects Found During Windows 7 Beta
In addition to our goal of finding globalization bugs via these languages, we also asked some of our OEM customers to provide feedback on the language aspects within their manufacturing processes. Since many of the OEMs are located in East Asia, we also localized Windows 7 Beta for Simplified Chinese, Traditional Chinese, and Korean.
In part because of the engineering process improvements described above, we were able to deliver more language packs for Windows 7 RC than we have ever been able to do in the past for Windows. For those of you running the Ultimate version of Windows 7 RC, you will have noticed the following thirty-two (32) Language Packs available for download on Windows Update:
32 Windows 7 RC Language Packs on Windows Update
One thing we will do differently in the future is to ensure that all languages available at Beta are also available at RC (e.g. not including Hindi for Windows 7 RC). We will correct this for future versions.
With Windows 7 beta localized into five languages and globally enabled for hundreds more, we received beta bugs from customers all over the world. We rely on these bug reports to help us improve Windows 7, so we devote much time to reading customer bug reports to determine product issues. Because bugs come from worldwide customers in many languages, we look for ways not only to understand their feedback, but also to address it as quickly as possible. The faster we can understand the issue, the better chance we have of addressing the feedback. As we receive bug reports in all the many languages that our customers speak, this has sometimes posed quite a challenge.
In the past, we have handled multilingual bug reports using manual processes, where individual bugs were examined and then manually translated one-by-one for appropriate follow-up by the feature team that owned the affected component. This is a time-consuming and error-prone exercise that scales poorly to a program as large and diverse as the Windows 7 beta. In the worst case, valuable international feedback has missed the window to affect the final product, and thus slipped to a Service Pack or subsequent release.
In Windows 7, by using the language detection API in the new Extended Linguistic Services (ELS), we have been able to automatically detect the language of customer bugs as they are reported. ELS functionality is new for Windows 7 and available to any developer who wants to leverage advanced linguistic functionality in the operating system. Beginning in Windows 7, developers may use ELS to provide language and script detection of any Unicode text, as well as transliteration to map text between writing systems. To use these Windows 7 services and all further services that we will add in subsequent releases, developers need only to learn one simple and unified interface. The ability to detect over one hundred (100) languages is available for all Windows 7 application developers, and we are happy to be able to apply this functionality to triage and handle beta feedback you send us from around the world. We use our own international developer functionality to improve our ability to respond to customer issues globally.
Once we have detected the language, we take the resulting text and use the machine translation support that is available online from Live Translator. This allows us to translate the text to English to get a sense of your feedback. Our engineers can then search our feedback database for specific features or areas of functionality. This also helps us in our efforts to ensure international application compatibility, as we can learn about potentially problematic international application experiences as soon as customers report them. Machine translation does not provide a perfect translation, but it does allow us to determine which issues might require further investigation. This in turn allows us to hear and respond to customer issues with a much faster turnaround time than we have had in previous releases, which means better quality in Windows 7 when we release it to the world.
By the end of Windows 7 Beta, we had used this process to translate 35,408 issues and comments submitted using the Feedback tool.
The end result of the work to improve globalization and localization quality is reflected in the announcement that all fully localized releases of Windows 7 will be available within two weeks of the initial release wave with all languages available in October. We hope (and believe!) end users will find the overall quality of these releases to be the best ever.
36 Windows 7 language releases available in October 2009
In addition to the 36 languages that will be released in October, there will be additional languages available for download as Language Interface Packs (LIPs) onto any Windows 7 edition as part of the Local Language Program (LLP). The LLP is a partnership with governments, universities, and language experts from around the world. (You can find more information on the LLP at http://www.microsoft.com/unlimitedpotential/programs/llp.mspx.) Work on a LIP starts at RTM and continues for many months based on the schedules of our partners. Two (2) LIPs will be available for download when Windows 7 is available in October – Catalan and Hindi. Additional LIPs will become available for download over the following months based on the schedules of our partners. We are happy to have improved the delivery time of the first 38 languages (36 + 2 LIPs) and recognize that future releases are an opportunity to improve further. Creating a track record of dependable release schedules on our part will help everyone around the world plan better for a more unified release timeline.
More information about Extended Linguistic Services (ELS) and other cool new features of Windows 7 are available on-line on MSDN. In particular, you can download the Windows SDK for Windows 7 and read about what is new in the ‘International’ section. Also, the new Go Global Developer Center on MSDN has a wealth of information about international technologies.
If you want to send us feedback, please comment on this blog entry or use the Feedback button in Windows 7. We love to hear from you (in any language).
-- Windows International Team
The best enhancement you could have made is making the MUI feature available to Home Premium SKU and above or at least Professional, so users could have purchased the English language version and still used MUI. Now I'm forced to buy a localized version of Home Premium because I don't need or want Ultimate.
I agree with anonymuos... when someone buys a new PC, they are locked in by whatever version the OEM has selected. Many OEMs choose English rather than a localized build. In some countries (e.g. Bulgaria... my country) it appears as if there aren't any local OEMs, but only merchants that take computers from other EU OEMs with Home Premium installed, thereby eliminating all possibility for a localized build for the end user.
The only way a user of such a region can get a localized build is to then buy *another* Windows license for the localized Home Premium or (better yet) buy a PC with Linux or no OS, then get such a license separately. This makes Windows more expensive than it already is, so many users choose to get a non-licensed version.
The simple solution is to make MUIs available in Home Premium (at least!) and (perhaps) Business versions. Ideally, on all versions.
Other than that - thanks. I'm glad that Bulgarian will be there in the October release.
As a user, I'm dissatisfied with the control Windows offers over applying/choosing fonts and typographical features. The common dialogs for choosing fonts and color have remained the same since Windows 95. Look at Word's font dialog or OS X's font panel (www.xvsxp.com/system/fonts_apply.php) and (www.hopelessgeek.com/2003/10/24/panthers-major-text-services-upgrade) which have so many text effects such as shadows, outline etc compared to Windows 7's. There should be a more easy and visual way of inserting Unicode characters rather than the ALT codes. Character Map's remained the same since so many years; it has an extremely tiny character preview and doesn't even quickly let me preview the same character or its variations in different typefaces. Word's Insert Symbol dialog is so much more advanced. Also, Windows doesn't have a typography panel. Why aren't text effects and more text services (such as universal spell check, hyperlink detection, smart quotes, system wide autocorrect/autoformat, favorites and styles) built into the standard Windows text engine-Uniscribe? The system supplied "Text Services" are so lacking. As for the font control panel and in the new Fonts dropdown boxes (used in Paint and WordPad), for any language, the actual preview of the font still shows in English which is useless and not in that language's script?!?
Microsoft should ship a phonetic keyboard layout for Indian/Devanagari languages. It's extremely difficult to remember the keyboard layout unless it's phonetic. संकेत चिह्न निर्माण :P
I had trouble using more than a couple languages with RC. For whatever reason, if I added more than 3-4 (I forget exactly), I had problems updating and had to reinstall from scratch.
Generally I only need a couple, but when you have multiple users their preferences are different, so it'd be great if installing more than a few languages at a time Just Worked out-of-the-box.
This is great, but can I make a passionate plea for something else? Win7 is just a few days away from RTM and we want to avoid the device driver problems that plagued Vista.
PLEASE PLEASE confirm that Microsoft's engineers are helping nVidia, ATI, Brother, HP, Dell, etc. to get their device drivers ready to go even BEFORE we can download the gold bits and certainly before the Oct 22nd retail release.
And PLEASE, not just for the new stuff, we don't want the *lack* of device drivers to be used as a slimey sales tactic to push new hardware sales.
My company has a ton of Dell Latitude D600's and D820's, for example, that are used for sales presentations, but we can't use Win7 on them because there's no video drivers available that can dual-display on projectors.
I don't know how else to BEG and PLEAD with Microsoft to get it right this time. The IT press and pundits are going to CRUCIFY you AGAIN if the device driver problem re-emerges, even a whiff of driver problems and they are all going to yell "See!!! They still don't get it!!!"
So, yes, it's nice that you've got improved support for other languages, cheers to you, but what difference does it make if I can't even use the new OS on my current systems because of a lack of device drivers????? And we can't go out and buy new hardware because of the recession and budget cuts.
So, to start, PLEASE call nVidia and Dell and tell them to publish their Win7 drivers *NOW*, don't wait until December, it'll be too late then, the IT media will have thoroughly crucified you again....
Great post, and I really appreciate the attention to detail put into Windows' localization.
One issue I've faced is that the English (Canada) region formats don't make any sense at all.
Short dates are in the correct Canadian format (31/01/2009), but long dates almost appear "computery" rather than in normal English, as you would expect.
A long date in English (Canada) appears as: "July-07-09". As far as I know, no one uses the format anywhere in Canada - we write long dates the same as in the United States: "Tuesday, July 07, 2009".
The change happened (I believe) in Vista, and believe it was in error. The Canadian federal government lists dates like "July-07-09" on their website, which is where I believe the Vista team "picked up" the format from. I'm not sure if they're just using it randomly or it's some strange "federal standard", but *no* English speaking Canadian uses that format. At one point, I even scanned some front pages of newspapers as proof.
Another issue in the Canadian locales is during installation. If an English speaking Canadian chooses "English (Canada)", the "Canadian French" and "Canadian Multilingual Standard" keyboards get installed along with the "US" keyboard.
It's a HUGE usability issue here in Canada - everyone uses US keyboards *except* for French Canadian users who custom order their computers. Not only does the ugly language toolbar appear all over the desktop for English users who will never use it, the multilingual shortcuts are also enabled. Even as I was writing this post, I switched to English (Canada). Now, keystrokes like double quote appear as È and apostrophes appear as è.
I must have hit some key combination, but if I immediately canèt figure out how I did as a senior software developer, how can you expect a standard user to know what's going on? :(
Currency and time appear correct - it's the long date format and the automatic installation of French keyboards for English users that give everyone here the biggest headaches.
Everyone I know runs English (United States) in Canada, mainly because Windows has always gotten Canadian localization wrong.
ShadowChaser, I get the same thing on my Vista box here at work (also a software developer), get crazy È's start appearing out of nowhere.
Probably an accidental key combination that causes it but I never know how to fix it. Guess us non-Francophone Canadians should just use the US keyboard setting!
@ShadowChaser and bananaman,
Left Alt+Shift switches the input language. Press it again to switch back. You can change this shortcut in Region and Language (Regional and Language Options) -> Langauges tab -> Details -> Key Settings. Microsoft should have put "Text Services and Input Languages" directly into the Control Panel.
In spite of all efforts to make Windows perfect global product it is still much better in its original language - US English.
Unfortunately, unlike in Bulgaria, in Russia one can hardly find laptop with English Windows preintalled. And, while retail copies if localized Windows cost more in Russia than English copies in US, the latter ones cost even more.
I hope, one day Windows will allow to switch to English MUI at least in Business Edition.
Text, fonts, typography ... they are so deceptively simple on the surface. The rabbit hole goes very deep though ... I've been doing development with the typography API's in GDI, GDI+, WPF, and DirectWrite over the last 2 months and it continues to overwhelm me with its complexity. However, over time I continue to get an appreciation for just how necessary the complexity is, and am also grateful that the end-user's experience is so much simpler!
@JF7 regarding the support for D600 and D820
I work on the Windows graphics team and I wanted to mention that we are working closely with the gpu vendors to get their drivers ready. For Win7 DX9 and above GPUs are tested and supported, even those that only have XP drivers (XDDM). It is harder to guarantee working of drivers for HW that is older than DX9.
The D600 has a ATI Mobile 9000 which is a DX8 class GPU but the Dell D820 comes equipped with a NVIDIA Quadro GPU which is DX9 and has a Vista class driver (WDDM). We do have a driver for this on Windows Update and when this driver is installed Windows+P key combination to project externally should work. Let us know if you have been unable to obtain the D820 driver from WU.
First of all, I wanted to answer sevenflavor, who, it's clearly seen, must haven't used Windows 7 yet.
And Font installation dialog, and Character Map, have been updated in Windows 7 to match Windows 7 style. No more they are the same as it was in Windows 95. And Font previews do include national characters. They were not in Vista. Please confirm your facts first, before posting.
How about some translations which are the same words in English language, but are different in the context in my language (Lithuanian).
Like simple Copying... in a dialog box, which is always the same in English.
If you copy 1 element, you have to say Kopijuojamas. If you copy multiple elements, you have to say Kopijuojami, while in English Copying... stays the same.
More problems of the same dialog box in RC: From: and To: in English is used both in e-mail message header, and in Copying dialog box. In Lithuanian these same two words have to be translated as Nuo: Kam: in e-mail header, and Iš: Į: in copying dialog box.
How do you manage that?
Actually, the latter I already saw as Closed(fixed) in Microsoft Connect website, hopefully that hasn't introduced regression in an e-mail application.
Will Windows ever feature Australian English/British English/Canadian English/etc. 'translations'? That is, 'favourite' rather than 'favorite', 'colour' rather than 'color', and so on and so forth. Surely this would be trivial compared to the work you've described in this post.