`
`USUU64-9679331
`
`(12) Ulllted States Patent
`Vcditz ct al.
`
`(10) Patent No.:
`(45) Date of Patent:
`
`US 6,496,793 B1
`Dec. 17, 2002
`
`SYSTi'Cl\?I AND Mi*:'l‘H()l)S FOR NATIONAL
`LANGUAGE SUPPORT WI'I'H EMBEDDED
`L0'CALE~SPECiF[C LANGUAGE DRIVER
`IDENTIFIERS
`
`(54)
`
`(75)
`
`(73) A _
`_
`§SIgfICCI
`
`Il'lVf-'l'll0f5l Daniel Pfllll V9ditZ. lrflllfifl. (.1/\ (U5);
`David Brett Sehnepper, Ins Gatos, CA
`(US)
`B H “d R flwan C
`[I 3
`L {l
`‘
`Vallgy’ CA (Us)
`
`{ll."[){l
`
`r ti
`Q
`it
`ii I0l'l, » CO W
`
`5.181.162 A * H1993 Smith et :1].
`5.-23ll's575 A ‘
`131994 Y°‘-'"E Cl 5”-
`-
`1
`. H
`OTHER l’UBLl(.Al IONS
`Hall, W.. Azinpt Your I’mgmm for Woridwiaic Use with
`Windotvs Inrernrnionrtiizririon Support, Mierosoll Systems
`Journal. Nov._1T)ec. 1991, pp. 29—58.
`Pet mid, C, Pttogrrmtming Windows, Second Edition, 1090,
`pp. 125-131 ((‘.|1apter 3: The Keyboard).
`I
`I
`* cued by examiner
`
`(“) Notice:
`
`Subiecl to any disclaimer, the term of this
`‘
`patent is extended or adjusted under 35
`U.S.C. l54(h) by 0 days.
`
`Primrtry Examiner—i’atrick N. Edouard
`“
`(74) A!I().i":‘1(’_}-',Ag£'iT.', or i‘~t'.rm—Darhy & Darby
`
`(57)
`
`ABSTRACT
`
`APB 21» 1993
`
`(21) Appp Na‘: 033050357
`__
`Fllccli
`(33)
`Gt)6F171’20; (1061-‘9,-'44
`Int. Cl.7
`(51)
`704,-'8; 7171137
`(52) U.S. ct.
`364E419 16 419 08
`(58) Field of qeamh
`'
`_
`304141909‘ 4l9'I9’ 4ig‘0l5 7171135‘ 146’
`4’ 8
`
`(56)
`
`,,
`‘
`.
`Referenwi’ (“fled
`u_s_ 11,411-;N'[‘ [)Q(juM[:,N‘1‘3
`
`4-'45("%9 A a W [984 Hawk 9! “L
`4,566,078 A *
`111936 Crabtree
`354.-'41o.01
`4,731,735 A *
`311988 Borgendztle at all.
`354,*'4l9.1IS
`4_.87U_.4-{J2 A *
`9.-"1089 DeLuca et al.
`...... .. 3b4.’4l9.I.()
`5,110,465 A *
`E');"l9‘.l2 Jack er al.
`
`The present invention eontprises a National Language Sup-
`port
`(NLS) system with Language Driver
`Identifiers
`(I.,DlDs)e1'ahec|dc:| aslocale-specificcleseriptors within clata
`°l’J"°"“ H“ 1‘1‘:‘i‘_“;‘f')‘*" “'“‘fll; I'M?’ b“ “_‘ ‘hf ml": “Eh?
`“5‘°'“"?°'""a"""
`‘°'3“
`”“')"'°"° °F"" °y°‘ ”‘ "
`system In several places to record the particular language
`(driver) which was used when a given data object was
`created or modified. The I.DIl) methodology of the present
`invention allows the system to intelligently process data
`objects created or modified under one language driver with
`those created or modified by :1 cliifcrent language driver. In
`the event of incompatibilities,
`the system provides error
`handling, routines, including a preferred interface for warn-
`irtg users of incompatibilities and receiving user choices in
`mspum lhmor‘
`
`31 Claims, 13 Drawing Sheets
`
`FACEBOOK, INC.
`EXHIBIT 1105
`PAGE 1
`
`FACEBOOK, INC.
`EXHIBIT 1105
`PAGE 1
`
`
`
`U.S. Patent
`
`Dec. 17, 2002
`
`Sheet 1 of 13
`
`US 6,496,793 B1
`
`1i
`
`104
`
`KEYBOARD
`
`
`
`10?
`
`102
`
`103
`
`MAIN
`MEMORY
`
`
`
`CENTRAL
`PROCESSOR
`
`111
`
`109
`
`CACHE
`MEMORY
`
`l/O
`CONTROLLER
`
`110
`
`FIG. 1A
`
`FACEBOOK, INC.
`EXHIBIT 1105
`PAGE 2
`
`DISPLAY
`DEVICE
`
`MASS
`STORAGE
`
`PRINTING
`DEVICE
`
`FACEBOOK, INC.
`EXHIBIT 1105
`PAGE 2
`
`
`
`U.S. Patent
`
`])ec.17,2002
`
`Sheet 2 of 13
`
`US 6,496,793 B1
`
`161
`
`INFORMATION
`
`
`
`(-150
`
`152
`
`163
`
`- 1
`
`NFOF{MATlON
`
`INFORMATION
`
`162
`
`153
`
`APPLICATION
`
`I1 ‘
`“W3
`"—"
`SOFTWARE
`\/~I
`OPERATING
`x '
`SYSTEM
`
`154
`
`|N1'Ea[:AcE
`
`..__,_
`
`USER
`
`151
`
`FIG. 1B
`
`170
`
`max
`DATABASE TABLE
`:
`———.
`~<EvvALvE%REc°Fm A
`‘ 2 “UM “Om
`jjj 173
`
`FACEBOOK, INC.
`EXHIBIT 1105
`PAGE 3
`
`j2 2
`1j2
`
`1
`T1
`12:
`
`FIELDS
`(COLUMNS)
`175
`
`FIG. 1C
`
`
`
`FACEBOOK, INC.
`EXHIBIT 1105
`PAGE 3
`
`
`
`SU
`
`eM
`
`tE2zo%nn$55025
`
`E2.8uv_8_._oS5N
`
`Pmomzmsowfioo
`.0:0
`
`SmHM"NEEEcomuqnozfi
`
`
`1,RE5x.H98.¢u>_EmwamgmE_,,_%EEm:.NEm$...Ho_
`
`m.52Hmomaommm_g__¢m>_¢o.
`
`MBmaoEE2;LwaiE8..........zoammmSE96
`
`
`
`
`3Ean5mowaozfimoqauzsmosazsM:f,rI!f(\\\E...
`
`3smézoommw\.m<s._m$mammfimomnomwmm“Emmuqmmacezocfimzqfi%/.Sm\mmmama
`fllll..."..1.11mmafi$.35mama
`
`
`
`EmmmhoéqxuEmmmbééommmfioéqxozoaiétzoozocqmzmmzoo2o..§....Em2oo
`
`
`
`
`
`Sll“Umas39;
`6HH¥n
`mmMWM6.,93namesmm9EXA,1.!laliCE
`
`
`EMWMai39:mgmzmfiB9:
`
`FACEBOOK, INC.
`EXHIBIT 1105
`PAGE 4
`
`
`
`
`
`
`QMU
`
`LI-m
`
`Sm2
`
`4
`
`m
`
`
`
`M@2392:Pmmémqmgsuzfi
`
`
`
`m._._m:ozmz_39%m_m<m._Ea.3Emzozm9mmsmcma5.3mmzoz”zo_5<
`
`
`n12%Ezmomoéozfi538$¢N19328..H93E54
`
`Ewe$60..
`
`M5%2emEE
`
`
`mozéo:nzofizM102%.: hmomqV.5amaze.m..98m>_5<9.2.93.203.2:N.m.93#8..2QBm_>_§..E>_EmoéozfiEammmT:.I|..!.93#59*Q3m_>:o<
`
`
`
`
`
`
`
`fm_z<oz_m._mEm_m<m<.:a5.3fwzozm9mm.,_Em.6$3
`
`.,A6F
`6.,mmwcE
`mmm%3.K,_HAwmmonmBP
`
`C.55
`
`FACEBOOK, INC.
`EXHIBIT 1105
`PAGE 5
`
`
`
`U.S. Patent
`
`Dec. 17, 2002
`
`Sheet 5 of 13
`
`US 6,496,793 B1
`
`
`
`hwmauNmmnu
`
`fiom_¥_uozVmmqgumm
`
`mmmau
`
`ommgu
`nmqau
`
`ommqu
`hmwqu
`
`ommau
`nmqnu
`
`mmqau
`
`mHq-“+mum
`ommqu
`omwUhmwau
`
`ommgu
`
`mmwgu
`
`ommnu
`mmfigu
`mmfiau
`
`hmqau
`
`ommau
`
`mmvau
`mmmqu
`
`ommgu
`
`nmvau
`
`
`
`m..._ms_n5y.OOqQB...
`
`mmmmmuou
`
`
`
`w:_m>QHQ4m_nmpmom:o:m4
`
`OHmwm
`
`afi
`
`NH
`
`mfi
`
`vfi
`
`ma
`
`wfi
`
`ma
`
`mfi
`
`ommfi
`
`Hm
`
`mm
`
`mm
`
`qm
`
`mm
`
`mm
`
`mm
`
`mm
`
`ommm
`
`Hm
`
`mm
`
`mz<H4<HH
`
`Nz<uxuzmm¢
`
`mz4u:uzmx_
`
`z<u:uzmx¢
`
`Nmmau
`
`Nmmau
`
`ommgu
`
`ommgu
`
`momma
`
`vm
`
`mm
`
`mm
`
`mm
`
`mm
`
`Nmmmzczpaom
`
`mmuzoahmom
`
`zifimmzx
`
`z4M¢<a==I
`
`:mH4o¢
`
`uHm«x<
`
`ImHz4a
`
`Nzupsa
`
`Iukza
`
`Nxmwzzflm
`
`:mHzzH¢
`
`Nxuzmxm
`
`Iuzmxg
`
`zqzxmw
`
`Nz<z¢mm
`
`z4H4¢»_
`
`mmwz<a4q
`
`NxmHz<¢m
`
`:mHom2m
`
`z4Hwm3moz
`
`NImHam3m
`
`IwHzq¢m
`
`mg:
`
`x:
`
`ms
`
`mxomwu
`
`¥mm¢m
`
`xumwu
`
`
`
`mm<moamooucmmwgamgpmwumuwucr
`
`
`wpmu_u=_w.¢mpwn.m__*oem¢_,H
`
`oe2=m:m»omu:wmmLam;#mmumu?u:vNawn.mwnmuJamcmmowucmmmgamzp
`
`
`
`
`Lom:4¢HH_mm«muLu;gwwVm_w%
`
`A>_mmqmu
`
`mu+n.Lons::co_mgw>mumu_ucw
`
`N-ompwg_u__$}Hum<muuw_m>
`
`mpmnHo
`
`
`
`Emu.6.3Eamx3....mmwméa
`
`m:?:mw:
`
`mgcmucouwuxm
`
`
`
`
`
`mmumuumELo+_wumua=pmm_+omama
`
`eozz>»
`
`mmpanmm-H
`
`mmmnmwmumgu___mugoumgwogmgesz
`gmne:cawa-mmh-v
`
`m_++
`
`Lmumwzmgucwmmuxahtugmaesz
`
`ugouwgespcwmagmamogages:
`
`;wne=c“_n-oHH~.oH
`Lwae=:#_a-©Hm-w
`
`:o_uumm:mgu
`
`uw>Lmmmm
`
`mgm_aeouc?mc_pmuwu:wmm_m
`
`mwpxnwmH-~H
`muxnfl¢fi
`
`_muo_mcopHmm<muLomum>Lmm¢¢
`
`
`
`mwpmnmfim~-mH
`
`
`
`mm_m:o_paxLu:u
`
`wuxnfimfi
`
`
`
`
`
`uvIHG“mapu__»xue.:o_uu:uo;a
`
`
`
`.m__+xuE.:o?uo:uoLamm_mLm;u
`
`uo:%_:oo
`
`umngmmmx
`
`QHQJ
`
`xgozumcmmgm
`
`muxnfimm
`
`opmnfimm
`
`map»;Nfim-om
`
`Loumcwegwpurmwmmgpwmxao
`
`mmLLmLowq_;ommou_wwm
`3.3HH...:53mm»?mm#._..¢:.Nm
`
`FACEBOOK, INC.
`EXHIBIT 1105
`PAGE 6
`
`FACEBOOK, INC.
`EXHIBIT 1105
`PAGE 6
`
`
`
`U.S. Patent
`
`Dec. 17, 2002
`
`Sheet 6 of 13
`
`US 6,496,793 B1
`
`BEGIN
`
`301
`
`LANGUAGEDEPENDENT
`FILE OPERATION
`L39
`
`ACCESS MAY BE
`.O'?,'§49EF?EEFE,f3rH
`IEE.«‘ID~0NI.‘IC READ/H/RITE.
`,-wo APFEND (EXISTING
`DATA ,5 READONM DESIRED ACCESS MODE
`
`LANG. DRIVER
`CHECKING ENABLED?
`
`302
`
`“O
`
`306
`OPEN FILE WITHOUT
`FURTHER CHECKING
`
`CHECK
`LANG. DRIVER
`
`YES
`
`CHECK LDID IN DATA
`FILE (6-9.. STORED IN
`HEADER)
`
`3% W
`
`9055 DATA FILE sTORE
`(I..:.. Know AESOUT) LANG.
`DRIVER INFORMATION?
`
`304
`
`N0
`
`BACKWAFIDS COMPATIBILITY
`
`YES
`
`305
`
`CASE OF:
`
`ZEFIO__I.DID_MSG ACCESS MODE
`
`RIO
`FIIW
`RIO
`FIJW
`
`
`
`
`SUPPRESS WARNING (‘NO DRIVER“)
`MESSAGE; OPEN FILE RIO; LEAVE
`LOCAL LDID IN DATA FILE AS ZERO
`
`311
`
`
`
`
`SUPPRESS WARNING MESSAGE?
`OPEN FILE RIW: SET LOCAL LDID IN
`DATA FILE T0 ACTIVE LDID
`
`
`
`
`
`
`IF
`DISPLAY WARNING MESSAGE;
`PFIOCEED, OPEN FILE RIO AND LEAVE
`LOCAL LDID IN DATA FILE AS ZEFIO
`
`
`
`IF
`DISPLAY WARNING MESSAGE;
`PROCEED, OPEN FILE RIW AND SET
`LOCAL LDID IN FILE TO ACTIVE LDID
`
` FIG. 3A
`
`
`
`FACEBOOK, INC.
`EXHIBIT 1105
`PAGE 7
`
`FACEBOOK, INC.
`EXHIBIT 1105
`PAGE 7
`
`
`
`U.S. Patent
`
`l)ec.17,2002
`
`Sheet 7 of 13
`
`US 6,496,793 B1
`
`AT THIS POINT IT IS
`KNOWN THAT THE
`FILE I5 LANG. DRIVER
`AWARE
`
`
`
`321
`
`COMPARE LDID OF DATA
`FILE T0 ACTIVE LDID
`
` PROCESS
`OR MANUALLY (USER-DIRECTED)
`
`
`AUTOMAHCALLY (TR/SNSLATE)
`
`EXCEPTION HANDLING
`
`IF
`PROCEED
`
`
`325
`
`OPEN FILE PER SPECIFIED
`MODE
`
`FIG. 3B
`
`FACEBOOK, INC.
`EXHIBIT 1105
`PAGE 8
`
`FACEBOOK, INC.
`EXHIBIT 1105
`PAGE 8
`
`
`
`U.S. Patent
`
`Dec. 17, 2002
`
`Sheet 8 of 13
`
`US 6,496,793 B1
`
`2% Language firivcr $§3a1':ifEaé far the fiie.
`flkay in View with current Language: firévaer’?
`
`Nu Language Elriver spe:::ifi:at:Hcrrt?1e f§t£:..
`, Gkay to super: fiiia anti assign the cuneni
`Languagam Eriver in it?
`
`-2 Language I3-rivar far the flit: is Encaméatéhit
`
`;; wit?! the cnxzfftni Language Ba'§'v‘e.r.
`
`FACEBOOK, INC.
`EXHIBIT 1105
`PAGE 9
`
`FACEBOOK, INC.
`EXHIBIT 1105
`PAGE 9
`
`
`
`emU
`
`e
`
`Ll
`
`Qm
`
`m
`
`0
`
`U
`
`M93#8..P3.28%Ha
`
`n....................:
`
`2mfizoomm
`
`
`
`mamamo“.E52.3mam_§mmqméa3zoammmsE@..wMmhomaoEaSmaoEaxohi.
`
`...7%.
`
`
`
`__...l......:....n....-........
`
`w98_MEazoumm
`Lmm.
`
`mmmzmoBea
`
`.
`
`
`6.,mamamo...Eommm.3:1ma9mBuC4.,Bmao3:67A6..FS.
`mm.K,_nmwEatmmP
`
`1mMm
`
`IME
`
`FACEBOOK, INC.
`EXHIBIT 1105
`PAGE 10
`
`
`
`
`U
`
`toHetM
`
`m
`
`02m
`
`....uS
`
`M0.1
`
`6SU
`
`canxmzozm
`
`MH
`
`manrozmmm
`
`BH
`
`anzsemmo_
`
`.8“\\3N8
`
`am
`
`mm
`
`5&3
`
`«I.B39J,69
`
`4:).|
`
`SmaoEEG
`
`mmGE
`
`em
`
`mmm>_E
`
`
`
`zoammm:.u:@6
`
`FACEBOOK, INC.
`EXHIBIT 1105
`PAGE 11
`
`FACEBOOK, INC.
`EXHIBIT 1105
`PAGE 11
`
`
`
`
`
`,1,
`
`Br0
`
`SU
`
`
`
`tan.........................,m93._,..oo._93E54
`
`.92184II93$.54
`
`MNm._m.s_.3--.2I|m,BmaoSE._._m:ozm_.
`
`imEazoommZOxm_D2_H
`
`%mamsemoomm.3
`
`SumacEa
`
`n:E§_
`
`
`
`zoammm.sfiea
`
`mmm%onGEm,mmM,mamfimomxu.a2..:3mmm_>_E_I.mm9meaSmEE4Swan.5%c6.,m
`
`FACEBOOK, INC.
`EXHIBIT 1105
`PAGE 12
`
`
`
`
`U.S. Patent
`
`Dec. 17, 2002
`
`Sheet 12 of 13
`
`US 6,496,793 B1
`
`Bgem
`
`I.ANGUAGE—DEPENDENT
`INTERFIEIATED FILES
`OPERATION
`500
`H
`
`50
`
`1
`
`INDEX FILE ACCE55 I5
`“’*”C"‘”" ’3E’*"’“"R”E-
`SO THAT FILE MAY BE
`UPDATED
`
`REQUEST TO .OPEN.
`DEPENDENT FILE win:
`DESIRED ACCESS MODE
`
`LANG. omvea
`cmscscwc; ENABLED?
`
`502
`
`N0
`
`506
`
`OPEN FILE WITHOUT
`FURTHER CHECKING
`
`CHECK
`1_ANG,DRn/ER
`
`CHECK LDID IN DATA
`FILE (0.
`., STORED IN
`EADEFI)
`
`DOES DATA FILE aroma
`(La, mow ABOUT) LANG.
`DRIVER INFORMATION?
`
`504
`
`N0
`
`BACKWAFIDS COMPATIBILITY
`
`YES
`
`505
`
`CASE OF:
`
`ZEFIO~_LDID_MSG
`
`
`
`SUPPRESS WARNING (‘N0 DRIVER")
`MESSAGE: OPEN FILE RM’: UPDATE LOCAL
`LDID TO ACTIVE LDID (ON 1st WRITE DPEFL)
`
`
`
` DISPLAY WARNING MESSAGE;
`IF
`PROCEED. OPEN FILE FWII AND HEBUILD
`FILE; SET LOCAL LDID T0 ACTIVE LDID
`
`FIG. 50
`
`FACEBOOK, INC.
`EXHIBIT 1105
`PAGE 13
`
`FACEBOOK, INC.
`EXHIBIT 1105
`PAGE 13
`
`
`
`U.S. Patent
`
`Dec. 17, 2002
`
`Sheet 13 of 13
`
`US 6,496,793 B1
`
`Na Lmaguiagget %':‘i.v&r speeifiaé {'13: index Fiie. Van may
`reimild film inniex We mafia? {ha t:1ment?§,,anguage
`
`Efiriver as Hag ihaa iiliflfifli lr;d3'.’;< File.
`
`FIG. 5A
`
`The Lamgigage Eiriver in: the kruiex Fiia dues mat ma-tcfi
`ymir ::u£2'a-“rs: Languaga flrivar.
`(31:33,; in rfihuiid éhe
`
`'¥a*sdm< F356 mstier {ha t::.sr'ren% Lan._guage Erivez”?
`
`FACEBOOK, INC.
`EXHIBIT 1105
`PAGE 14
`
`FACEBOOK, INC.
`EXHIBIT 1105
`PAGE 14
`
`
`
`US 6,496,793 B1
`
`1
`SYSTEM AND METHODS FOR NATIONAL
`LANGUAGIC SUPPORT WITH EMI3l£l)I)EI)
`I.()CALl<Z-SPICCIFIC LANGUAGl'*1 DRIVER
`IDENTIFI ERS
`
`COl’YRIGH'I' NOTICE
`
`A portion of the disclosure of this patent document
`contains material which is subject to copyright protection.
`The copyright owner has no objection to the facsimile
`reproduction by anyone of the patent document or the patent
`disclosure as it appears in the Patent and Trademark Office
`patent file or records, but otherwise reserves all copyright
`rights whatsoever.
`BACKGROUND OF THE INVENTION
`
`I0
`
`15
`
`For software publishers, overseas markets comprise an
`ever-growing percentage of revenues for all major PC appli-
`cations. Traditionally, however, software products have been
`designed with little or no thought
`toward portability,
`let
`alone translating software products for overseas markets. As
`non-English speaking countries are buying more and more
`software from US. publishers,
`there is keen interest
`in
`improving the process of enabling or “internationalization",
`that is, designing and coding a software product so that it can *
`be made to function for international use.
`
`In the past, the process of providing National Language
`Support (i.e., accommodating a specific country’s language,
`conventions, and culture) was done on a more or less ad hoc
`basis—essentially retrofitting software to accommodate a
`particular locale. Merely separating the text in a user inter-
`face from one ‘s program is not an acceptable solution,
`however. Even after translating software prompts, help
`messages, and other textual
`information to the target
`languages, one still has to address basic issues of displaying
`and printing characters in the target language.
`For instance, a target language will often include charac-
`ters which are not defined by the default character set
`provided by the computer’s operating system.
`IBM-
`compatible PCs running MS-DOS, for example, can display
`and print up to 256 different characters, the first 128 char-
`acters of which include the well—l<nown 7-bit ASCII char-
`acter set. This, of course, is not enough characters to support
`all
`languages. Some languages will obviously require a
`different character set; thus, suficient means must be pro-
`vided for switching character sets.
`Other issues to consider when developing a system for
`foreign users include keyboard layout and various fonrtat
`conventions applicable for a particular country. Any use of
`currency, date, time, and the like within one‘s software must
`take into account these factors. For example. keyboards sold
`for European languages must include additional characters,
`such as letters with diacritics, and symbols, such as the
`British pound (12) sign.
`Another potentially serious problem for localizing a prov
`gram is the set of assumptions with which the underlying
`source code for the program was written. Assumptions made
`by English-speaking programmers, which were quite valid
`for the once—ubiquitous ASCII character set, often break
`down when dealing with a foreign language. For instance,
`the common programming technique of converting a char-
`acter to uppercase by simply adding the number 32 to the
`character (numeric code) is often inappropriate for non-
`ASCII characters. Similarly, one cannot rely on standard C
`functions either. For instance, one cannot use simple string
`comparison functions like the C programming language’s
`
`3-0
`
`35
`
`40
`
`45
`
`50
`
`55
`
`60
`
`65
`
`2
`
`strcmp() function. Does an --5" (i.c., an "a" with a diacritic)
`sort before or after a normal “a”?
`
`One of the first serious attempts at providing National
`Language Support (NLS) for I-’(.’s was Microsoft’s MS-DOS
`version 3.3. Since MS-DOS accommodates different sets of
`256 characters for displaying and printing text, one may
`employ different characters by swapping in new character
`sets. Each such character set is referred to as a “code page";
`the code page in use at any given time is called the “active
`code page.” When installing operating system software,
`typically, a user may select a code page appropriate for his
`or her national language.
`MS-DOS also includes an API (Application Programming
`Interface) having a variety of functions related to intema-
`tionalization.
`Included are functions for
`inspecting code
`pages for determining and controlling how the keyboard,
`display, and printer handle characters. The API
`include
`functions, for instance, for inspecting and changing the
`current country code and obtaining information about the
`conventions associated with a current country code (e.g.,
`how to display dates, currency, and the like).
`Newer versions of MS-DOS also include support for
`character comparisons,
`through use of language-
`independent
`tables for sorting strings. Still, this is by no
`means a complete solution to the problem. Arabic languages,
`for instance, remain problematic. For one,Arabic is read and
`written right-to-left, not left-to-right. Also,Arabic characters
`require contextual analysis in order to determine which of
`four different shapes the Arabic characters should have
`(depending upon location in a word or phrase). Thus, a
`language may have its own special set of problems which
`must be addressed before international use.
`
`To date, clforts at localization have been largely limited to
`ensuring that a particular program, such as an operating
`system or application software, is itself enabled for a par-
`ticular country. When installing Microsofts Windows, for
`instance, a user is asked to select a country from a list of
`supported countries. Windows,
`in turn,
`installs various
`keyboard, display, and print drivers appropriate for the
`selected country. This “program centric” approach is only a
`partial solution, however.
`Consider the scenario of a corporation based in the US.
`receiving sales information from several foreign subsidiar-
`ies. Typically, such in formation would be transmitted as data
`files, such as spreadsheet or database files. In this instance,
`the information management system in the U.S. may be
`required to process data files created from a variety of
`foreign data processing systems, ones having character sets
`and conventions peculiar to a particular country. Converting
`such data files from one language to another inevitably
`results in the loss of language-specific information. Once
`converted, the information cannot be processed {e.g., adding
`and deleting information records, generating reporLs, and the
`like) and then simply reconverted back to its original form.
`Moreover, should that infonnation be inappropriately pro-
`cessed (e.g., sorting German information according to an
`English sort order), valuable data may be corrupted.
`in
`One approach to averting this problem is to agree,
`advance, on a single data format (e.g., code page 437—the
`variant used in the United States and many European
`countries) to be used by all foreign ofices ofthe corporation.
`However, this solution invites another problem: the foreign
`offices must forego their own National Language Support,
`thus compromising their own data processing needs all for
`the convenience of the U.S. office. And even with such an
`approach, the risk remains that an office may inadvertently
`
`FACEBOOK, INC.
`EXHIBIT 1105
`PAGE 15
`
`FACEBOOK, INC.
`EXHIBIT 1105
`PAGE 15
`
`
`
`US 6,496,793 B1
`
`3
`mix data from its locale with the agreed-upon format,
`leading to corruption or loss of data. Needless to say, the
`approach is undesirable at best.
`System and methods are needed which allow users of
`computer systems to create and freely exchange data files,
`irrespective of National Language Support requirements. In
`particular, such a system would permit a user to create an
`information file in his or her own locale without regard to the
`requirements of other systems which may need access to the
`very same data from that file. The present invention fulfills
`this and other needs.
`
`5
`
`I0
`
`SUMMARY OF THE INVENTION
`
`15
`
`invention comprises a National Language
`The present
`Support including a language configurator, for processing
`data objects in a manner which is appropriate for the
`language configuration of each object. The language con-
`flgurator provides necessary support for a data object (which
`typically stores infonnation in a particular language) so that
`the data object may be appropriately processed by the
`system.
`The system of the present invention continually checks
`and maintains correct language configuration. A descriptor
`or Language Driver Identifier (LDID) (c.g., in the form of a _
`system-comparable unit) is employed for storing in desired
`location(s) of a data object information specifying the lan-
`guage driver that was in use when the data object was
`created or modified. The LDID, which may be in the form
`of an ID byte, references a set of language driver values
`(e.g., lookup table of locales). This allows the system of the
`present invention to intelligently process data obiccts cre-
`ated or modified under one language driver with those
`created or modified by a ditferent language driver. In the
`event of incompatibilities, the system provides error han-
`dling routines,
`including facilities for warning users of
`incompatible or otherwise illegal operations.
`A data object is preferably constructed so that it embeds
`or stores the Language Driver Identilier directly within the
`object
`itself, so that
`the object
`is sell‘-contained.
`In an
`exemplary construction of the data tile, for instance, the tile
`may include a header region for storing a Local Language
`Driver ID (“Local LDlD”}. This is followed by the actual
`information or data for the object.
`The language configuration which the system currently
`operates under (i.c., during the current session) is also
`identified by the language contigurator, which maintains an
`Active Language Driver ID (Active LDID) for referencing
`a I.anguage Driver currently employed by the system (i.e.,
`for the current session). In this manner, the local LDID may
`be compared against
`the Active LDID,
`thus enabling the
`system to determine instances where the system is inappro-
`priately configured for a data object about to be processed.
`Actual language configuration is effected through one or
`more Language Drivers which,
`in turn, select
`the most
`appropriate language configuration table(s). Each driver is
`of a particular type (identified with an I..DID value} and
`references an appropriate resource file and an appropriate
`character set or code page for achieving National Language
`Support.
`
`3-0
`
`35
`
`40
`
`45
`
`50
`
`55
`
`60
`
`BRIEF DESCRIPTION OF THE DRAWINGS
`
`FIG. 1/\i.s a block diagram of a computer system in which
`the present invention may be embodied.
`FIG. 1B is a block diagram of a software system of the
`present
`invention, which includes operating system (05),
`
`65
`
`4
`database management system (DBMS) and application
`software, and user interface components.
`FIG. 1C is a block diagram illustrating data objects for the
`system of FIG. 1B, which includes a database table and its
`index.
`
`FIG. 2A is a block diagram illustrating a National Lan-
`guage Support (NLS) system of the present invention, which
`includes a language identifier embedded within each data
`object.
`FIG. 2B is a diagram illustrating the overall operation of
`language driver mapping in the system of the present
`invention.
`
`FIG. 2C is a diagram illustrating the embedding of the
`language identifier of the present invention within the header
`of a data file (.DBI5 file), whereby the Iile may be associated
`with a particular language driver (referenced through a
`lookup table).
`FIGS. 3A—B comprise a flowchart illustrating a language-
`dependent file operation method of the present invention.
`FIGS. 4A—C are bitmap illustrations of exemplary dialog
`interfhces for reporting language driver information and
`receiving user choices in response thereof.
`FIGS. 5A—C are block diagrams illustrating the applica-
`tion of langu age driver identification to moreadvanced data
`objects (e.g., interrelated files).
`FIG. SD is a flowchart illustrating a method of the present
`invention for language-dependent interrelated file operation.
`FIGS. 6A—B are bitmap dialog interfaces illustrating the
`reporting of Ianguage driver information (from the method
`of FIG. 5) and receiving user choices in response thereof.
`GLOSSARY
`
`Information Inter-
`ASCII: American Standard Code for
`change; a sequence of 128 standard characters.
`Code page: A character set, such as available in MS~DOS
`versions 3.3 and later, that provides a table for relating the
`binary character codes used by a program to keys on a
`keyboard or to the appearance of characters on a display.
`Database: An organized collection of information.
`Database Management System (DBMS): System that con-
`trols the organization, storage, and retrieval of informa-
`tion in a database.
`Enabling or Internationalization: Designing and coding a
`product so that it can be made to function for international
`use. A product is enabled if a national language version
`can be created at minimal expense and if it does not
`interfere with current or planned national language sup-
`port of other products.
`File: A collection of information stored under one name on
`a disk. For example, the system tables are stored in files.
`Index: A file that determines an order in which the system
`can access the records in a tabie.
`Glyph: A graphic representation of a single character.
`Localization: Translating and adding functions to an enabled
`product
`to accommodate a country’s languages,
`conventions, and cultures.
`National l_.an.guage: A language or dialect spoken by any
`group of people.
`National Language Support: The features of a product that
`accommodate a specific country, national language, local
`convention, culture, and the like.
`National Language Version: A variant of an original product
`that implements National Language Support and is tar-
`geted to a particular market.
`Retrofitting: Redesign and modification of a product that has
`not been enabled.
`
`FACEBOOK, INC.
`EXHIBIT 1105
`PAGE 16
`
`FACEBOOK, INC.
`EXHIBIT 1105
`PAGE 16
`
`
`
`US 6,496,793 B1
`
`5
`Table: A structure made up of rows (records) and columns
`(fields) that contains information.
`DETAILED DESCRIPTION OF A PREFERRED
`EMBODIMENT
`
`6
`mand menus; a QBE query worksurface is also provided.
`Application software 153,
`in turn,
`includes database
`command-language applications (e.g., dBASE@
`applications), which may be executed or otherwise acted
`upon by the DBMS 154. For further description of the
`general operation of dBASl:‘,
`the reader should refer to
`(IBASE IV manuals: Getting Started, Using dBASE IV,
`Language Reference, and Programming in dBASIl IV, all
`available from Borland International, and the disclosures of
`which are hereby incorporated by reference.
`tech-
`At the outset,
`it
`is helpful to understand general
`niques for storing information in DBMS 154. In a relational
`database management system, infonrtation is organized into
`tables, such as table 170 of FIG. 1C. A.s conceptually shown,
`table 170 typically includes horizontal
`rows or records
`(tuples) 173 and vertical columns or fields 175. A database
`record includes information which is most conveniently
`represented as a single unit. A record for an employee, for
`example, may include information about the employee’s II)
`Nu mber. Last Name and First Initial, Position, Date Hired,
`Social Security Number, and Salary. Thus, a typical record
`includes several categories of information about an indi-
`vidual pcrson, place, or thing. Each of these categories, in
`turn, represents a database field. In the foregoing employee
`table, for example, Position is one field, Date Ilired is
`another, and so on. With this format, tables are easy for users
`to understand and use. Moreover, the flexibility of tables
`permits a user to deline relationships between various items
`of data, as needed.
`By employing one or more database indexes, the records
`ofa table can be organized in many different ways, depend-
`ing on a particular user's needs. As shown by index 180 of
`FIG. 1C. for example, an index may be constructed as a
`single disk file which is referred to internally by the system
`for locating and displaying records in a database file (e.g.,
`table 170). Index 180 stores two types of information: index
`key values 183 and unique record numbers 185. An index
`key is a data quantity composed of one or more fields from
`a record; keys are used to arrange (logically) the database
`[ile records by some desired order (index expression).
`Record numbers, on the other hand, are unique pointers to
`the actual storage location ofeach record in the database file.
`In this manner, an index for a database file is similar to the
`index of a book, which lists subject keys and page numbers
`that point to where the actual information is located in the
`book. Specifically, an index organizes (logically not
`physically) the records in a database file according to the
`values in one or more fields of interest. As such, an index
`may greatly speed up searching (querying) for and sorting of
`information.
`In addition to tables and indexes, DBMSs typically pro-
`vide electronic “forms” and "reports”—dcsign documents
`for entering and retrieving information of interest. A form,
`for instance, is created for simplifying data entry by pre-
`senting a user with a screen facsimile of a real-world
`document which the user is already familiar with, such as a
`purchase order. A report, on the other hand, extracts infor-
`mation of interest from one or more information tables and
`presents it in a desired format.
`Tables,
`indexes, forms, reports, and other useracreated
`objects are all data-dependent components. Specifically,
`each component contains information in a particular lan-
`guage. For components to interrelatc in a meaningful
`fashion, they must “speak the same language," or at least be
`compatible with a given language scenario. A database table
`storing information in Danish, for instance, should not be
`sorted by an index file which expects information to be in
`
`FACEBOOK, INC.
`EXHIBIT 1105
`PAGE 17
`
`ll)
`
`15
`
`-
`
`the following description will focus on an
`For clarity,
`embodiment of the present invention operative in a database
`environment. Specifically, since most readers will have at
`least some exposure to database systems,
`it
`is helpful to
`describe the present
`invention as implemented in such
`systems. The present invention is, however, not limited to
`any particular exemplary embodiment. Instead, the teach-
`ings of the present invention may be advantageously applied
`to a variety of applications {e.g., spreadsheets,
`wordprocessors, CAD programs, and the like), operating on
`a variety of architectures (c.g., Macintosh, MS—DOS,
`Windows, NextStep, UNIX, and the like). Application of the
`principles of the present invention is particularly advanta-
`geous in those systems where information must be shared
`internationally. Therefore, the following preferred embodi-
`ment and certain alternatives are offered for purposes of
`illustration and not limitation.
`General Architecture
`The present invention may be embodied on a computer
`system such as the system 100 of FIG. 1A, which includes _
`a central processor 101, a main memory 102 (e.g., random-
`acccss memory or RAM), an inputfoutput controller 103, a
`keyboard 104, a pointing device 105 (e.g., mouse, track ball,
`pen device, or
`the like), a display device 106. and a
`non-volatile or mass storage 107 (eg., hard or fixed disk,
`optical disk, magnct0—optical disk, or flash memory). Pro-
`cessor 101 includes or is coupled to a cache memory 109 for
`storing frequently accessed information; memory 109 may
`be an on-chip cache or external cache (as shown). System
`100 may also be provided with additional
`inputfoutput
`devices, such as a printing device 108, as desired. The
`various components of the system 101] commu nicate through
`a system bus 110 or similar architecture, as shown.
`Illustrated in FIG. 1B, a computer software system 150 is
`provided for programming the operation of the computer
`system 100. Software system 151], which is stored in system
`memory 102 and on disk memory 107, includes a kernel or
`operating system 151 and a database management system
`(DBMS) 154. O3 151 is the executive or supervisor for the
`system 100, directing both task management and data man-
`agement.
`DBMS 154, on the other hand, is a software subsystem for
`storing, retrieving, and manipulating information in data-
`base tables (e.g., tables 161, 162, 163). Under the command
`of DBMS 154, the system 10-!) receives user commands and
`data through user interface 152. Interface 152 includes a
`built-in query surface or editor for accessing and processing
`database information. Additional application programs, such
`as DBMS application software 153, may be ‘‘loaded’‘ (i.e.,
`transferred from storage 107 into memory 102) for execu-
`tion by the system 100, particularly for further controlling
`the operation of DBMS I54.
`In a preferred embodiment, the system 100 is an IBM-
`compatible personal computer system, available from a
`variety of vendors (including IBM of Armonk, N.Y.), and
`operating system 151 is MS-DOS operating system
`software, available from Microsoft of Redmond, Wash.
`DBMS 154 is preferably a PC database management system
`(PC DBMS). More preferably, DBMS 154 includes
`dB/\SE® Database Management System (available from
`Borland International of Scotts Valley, Calif.) As interface
`152, dBASE provides a worksurface or ‘‘canvas’‘ and com-
`
`3-0
`
`35
`
`40
`
`45
`
`50
`
`55
`
`60
`
`65
`
`FACEBOOK, INC.
`EXHIBIT 1105
`PAGE 17
`
`
`
`US 6,496,793 B1
`
`I0
`
`15
`
`3-0
`
`35
`
`40
`
`7
`English. Thus, it is desirable to provide a means by which
`these user-created objects may interact with one another
`appropriately.
`Preferred Configuration for National Language Support
`A. Language Configuration
`the problem of configuring a system, such as system 150,
`to operate with National Language Support is multifaceted.
`For instance,
`the problem of accurately representing the
`language itself
`the characters which are needed for disw
`playing and printing the written Ianguage——is by no means
`trivial. Moreover, many countries have specific formats for
`dates, currency, and the like.
`Referring now to FIGS. 2A—B, a preferred system eon-
`figured for National Language Support will now be
`described. NLS system 200 includes the system 100 oper~
`ably coupled to a language configurator 230 of the present
`invention. More particularly, the language conliguratot‘ 230
`includes means whereby the system 100 may process data
`objects in a manner which is appropriate for the language
`configuration of each object.
`As shown in FIG. 2A,
`the language configurator 230
`provides necessary support for a data object 201 (which
`typically stores information in a particular