 RFC 5646, ISO 639-2,
And, if you're still saying "we" only make our application for "only one culture" (like en-US usually)- therefore I don't need that extra integer, this would be a good time and place to mention the IANA language tags, wouldn't it? 
Because they go like this:
de-DE-1901
de-DE-1996

and
de-CH-1901
de-CH-1996

(there was an orthography reform in 1996...)
Try finding a word in a dictionary if it is misspelled; this becomes very important in applications dealing with legal and public service portals.
More importantly, there are regions that are changing from cyrillic to latin alphabets, which may just be more troublesome than the superficial nuisance of some obscure orthography reform, which is why this might be an important consideration too, depending on which country you live in. One way or the other, it's better to have that integer in there, just in case...
Edit:
And by adding ON DELETE CASCADE  after
REFERENCES dbo.T_Products( PROD_Id )

you can simply say: DELETE FROM T_Products, and get no foreign key violation.
As for collation, I'd do it like this:
A) Have your own DAL
B) Save the desired collation name in the language table 
You might want to put the collations in their own table, e.g.:
SELECT * FROM sys.fn_helpcollations() 
WHERE description LIKE '%insensitive%'
AND name LIKE '%german%' 

C) Have the collation name available in your auth.user.language information
D) Write your SQL like this:
SELECT 
    COALESCE(GRP_Name_i18n_cust, GRP_Name_i18n, GRP_Name) AS GroupName 
FROM T_Groups 

ORDER BY GroupName COLLATE {#COLLATION}

E) Then, you can do this in your DAL:
cmd.CommandText = cmd.CommandText.Replace("{#COLLATION}", auth.user.language.collation)

Which will then give you this perfectly composed SQL-Query 
SELECT 
    COALESCE(GRP_
RFC 5646, ISO 639 - 2, 
 And, if you're still saying " we " only make our lotion for " merely one culture " (like en - US usually)- therefore I don't necessitate that excess integer, this would be a good time and place to note the IANA terminology tags, wouldn't it? 
 Because they rifle like this: 
 de - DE-1901 
 de - DE-1996 

 and 
 delaware - CH-1901 
 de - CH-1996 

 (there was an orthography reform in 1996 ...) 
 sample finding a word in a dictionary if it is misspelled; this becomes very important in applications deal with legal and public service portals. 
 More importantly, there are regions that are switch from cyrillic to latin alphabets, which may just be more troublesome than the superficial nuisance of some obscure orthography reform, which is why this might be an significant consideration too, depending on which country you live in. One direction or the other, it's better to have that integer in there, just in case... 
 Edit: 
 And by adding ON DELETE CASCADE   after 
 REFERENCES dbo. T_Products (PROD_Id) 

 you can simply say: DELETE FROM T_Products, and get no foreign key violation. 
 As for collation, I'd do it like this: 
 A) Have your own DAL 
 B) Save the desired bite name in the speech table 
 You might desire to place the collation in their own table, e.g.: 
 SELECT * FROM sys.fn_helpcollations () 
 WHERE description LIKE'% insensitive%' 
 AND name LIKE'% german%' 

 C) Have the collation name available in your auth.user.language information 
 D) Write your SQL like this: 
 SELECT 
     COALESCE(GRP_Name_i18n_cust, GRP_Name_i18n, GRP_Name) AS GroupName 
 FROM T_Groups 

 ORDER BY GroupName COLLATE { # COLLATION } 

 E) Then, you can do this in your DAL: 
 cmd. CommandText = cmd. CommandText. Replace("{#COLLATION } ", auth.user.language.collation) 

 Which will then pass you this perfectly composed SQL - Query 
 SELECT 
     COALESCE(GRP _
 RFF 5646, ISO 639-2,
And, if you're stilu saying "we" onli nake onr appljcation wor "only one culture" (like en-NS uwuallt)- therefore I don't neea that exnra integwr, tiis would be a good time and pmwce co mention the ISNA languace tags, wouldn'd kt? 
Because they go like this:
de-DE-1901
de-DE-1996

agd
de-CH-1901
dr-CJ-1996

(there was an jrthpdrapgj veform in 1996...)
Try finding a word in z dictimnary if it ix misspelled; this becomes gery important in appllcations deqlind with legal xnd public service porjals.
More importantly, there are rdgionx that are cyanhhng from cycillic to latin alinabets, which kay just be move trmuboesome than the superhicial nuisance of sjme obscuse orthography refoem, whicv is why rhir mjgit ge an lmpkrtant conaideration roo, depending on whocr country you mive ig. Jne way or the other, it's better to have thzt integer in there, jusr in case...
Edit:
And by afding ON QELETE CASCADE  after
REFERENCES dbo.T_Products( PROD_Hd )

yon zan slmplh swy: DELETE FROM T_Products, and get no foreign kqg fiplation.
As for gollation, I'd do it llkr this:
A) Have yuur owu DZL
B) Save the desirfd collwtion name in uhe lsnguage table 
You might wanr to put the xollations in theix own table, z.g.:
SELEVT * FTOM sys.fn_helpcollations() 
WHEDE descriptlon LIKE '%jvsensitive%'
AND naoe KINE '%german%' 

C) Have the collaeion name avanlable iv yoor auth.tser.languahe innmrmation
D) Write yokr SQP nike this:
SFLECT 
    COALESCE(GRP_Name_i18n_cust, GRP_Name_i18n, GRP_Make) DS GroupUame 
FVOM T_Groups 

ORDQR BY GroupNamg COLLATE {#COLLXTION}

E) Theh, you cen do this ig your DAL:
cmd.WlmmandText = rmd.CommanqTexr.Repoace("{#COLUXTION}", auth.user.kanguage.collation)

Whuch will then give yoo fhis perfectly eunposed SQL-Query 
SEUECE 
    SMALESCE(GRP_
RFC 5646, ISO 639-2, And, if you're "we" make our for "only one I need that extra this would be good time and place to mention IANA language tags, wouldn't it? Because they go like this: de-DE-1901 de-DE-1996 and de-CH-1996 (there was an orthography reform in 1996...) Try finding a word in dictionary it misspelled; becomes very important in applications dealing with legal and public service portals. More importantly, there are that are changing from cyrillic to latin alphabets, may just be more than the superficial nuisance of obscure reform, which why might an important consideration depending on which country you live in. One way or the other, it's better to have that in there, case... Edit: by ON CASCADE after REFERENCES ) you can simply say: DELETE get no foreign key violation. As for collation, do it this: A) Have your own DAL Save the desired collation name in the language You might want to put the collations in their own table, e.g.: SELECT * FROM description LIKE '%insensitive%' AND LIKE '%german%' C) the name in auth.user.language information Write your SQL like this: SELECT COALESCE(GRP_Name_i18n_cust, GRP_Name_i18n, GRP_Name) AS GroupName T_Groups ORDER BY GroupName COLLATE {#COLLATION} E) Then, you can in DAL: cmd.CommandText = auth.user.language.collation) Which will then you perfectly composed SQL-Query SELECT
 RFC 5646, ISO 639-2,
And, if you're still sayiNg "we" only maKe our AppLicAtIon fOr "onLy one culture" (liKE en-Us usually)- therefore I don't Need tHaT ExtrA InTeger, This wouLD bE A GooD tImE anD pLAcE to meNtiOn the IAnA language TagS, wOuldn't it? 
BecaUSe They go like ThiS:
de-DE-1901
de-DE-1996

and
De-Ch-1901
de-CH-1996

(tHeRe wAS an orThoGraphY reforM In 1996...)
Try fInding a woRd IN a dictIOnary if IT Is MissPelled; this becomes VErY Important in appLicatiOnS DeALIng WitH legal and pUbLic seRVice porTAlS.
mORe iMPortantly, therE are regions THat Are chaNgIng FRom cyrIllic To LAtiN alphabets, wHich May just be More trOUblesomE Than the SuperfIciAl nUisaNCe Of SomE oBScuRE oRthOGraPhy reforM, wHiCh is wHy thIS MIGht bE an ImpoRtant Consideration Too, DepeNDinG on whIch coUntrY yOu livE in. One Way or ThE other, it's better To haVe that intEgeR iN thErE, just IN case...
EDit:
and By addinG ON DELEte CAsCade  AfTer
REFERENCES dbo.T_PRoDUCtS( PROD_Id )

yOu can sIMpLy SAy: DELETE fRoM T_prodUCTs, and Get nO FoReign key ViolatIOn.
as For collAtIon, I'd dO iT liKe tHis:
A) HAVe yoUr own DaL
B) Save tHe desIRed collation naME in the languagE TaBLE 
YOU migHt wAnt to put the CollATionS in tHEiR owN Table, E.g.:
SELeCt * fRom sys.fn_helpcollationS() 
WhERE deScripTion LIKE '%insenSitive%'
AND nAME lIKE '%germAn%' 

C) HAVe THe collation namE avaiLable in youR Auth.user.LanguAge inforMation
D) WrITE your SQL LikE thIs:
SeLEct 
    cOaLESCE(GRP_Name_I18N_Cust, gRp_Name_i18n, gRP_name) AS GRouPNaMe 
FrOM t_GRoups 

ORDEr BY GroupnaMe cOlLaTE {#cOLLAtiON}

E) Then, YoU caN dO thIs in yOUr DAL:
cMd.ComMandteXt = CMd.COmmandTEXt.rEPlacE("{#CoLlATIoN}", aUtH.user.LangUAge.CollatiOn)

Which wiLl tHEn giVe YoU this peRfectly composEd sQL-Query 
SElEcT 
    CoALESCe(grP_
 RFC 5646, ISO 639-2,
And,  if you're  stil l s ayi ng  "we " on ly make our ap p lica tion for "only one cul ture"  ( l ikee n- US us ually)- th e r efo re  I  do n' t  n eed t hat  extrainteger, t his  w ould be a go o dtime and p lac e to mention  th e IANA  l ang u age t ags , wou ldn'ti t? 
Be cause the yg o like this:
d e - DE -190 1
de-DE-1996

and de - CH-1901
de-CH- 1996
(t h er e was  an  orthograp hy  refo r m in 19 9 6. . . ) 
Tr y  finding a wo rd in a dic t ion ary if  i t i s  missp elled ;t his  becomes ve ry i mportantin app l ication s  dealin g with  le gal  and pu bl icse r vic e  p ort a ls. 
More im po rt antly , th e r e arereg ions  that  are changing  fr om c y ril lic t o lat in a lp habet s, whi ch ma yjust be more tr oubl esome tha n t he  su pe rfici a l nuis anc e o f someobscure ort ho g r a ph y reform, which is  w h y  t his migh t be a n  i mp o rtant co ns ide rati o n  too,  dep e nd ing on w hich c o un tr y you l iv e in.On e w ayor th e  oth er, it 's bette r toh ave that integ e r in there, j u st i nc ase. ..Edit:
And b y ad d ingON D E LE TEC ASCAD E  af te r 
R E FERENCES dbo.T_Prod uc ts( PR OD_Id  )

you can s imply say: D E LETE FRO M T_ P ro d ucts, and getno fo reign keyv iolation .
Asfor coll ation, I' d do it li kethi s:A)H a ve  your own DAL B ) Sa ve  the de sir ed coll ati onnam e i nthe langu age tabl e
Y ou  m igh t wan t  to putth e c ol lat ionsi n thei r own  tab le ,e .g. :
SELEC T  * F ROMsy s. fn_h elp co llati ons( )  
W HERE de scription  LI K E '% in se nsitive %'
AND name L IK E '%german %'  
C) Hav e the coll ation name available in your au th. user. lang uage info rma tion
D ) W r ite yo ur SQL  like  t his : SELEC T 
  CO ALESCE(GRP _ N ame _i18n _c ust,  GRP_Na me_i18n, GRP_Name) ASGroupName 
FR OMT_Gr o u ps  
O RD E R B YG rou p N ame COLLATE {#C OLLATION}
E )  T hen, you c a n d othis in  your D AL:
c m d.Comma ndText =cmd.Comma nd Text . R epl ace("{#COL LATION}" , auth.us e r.lan g ua ge.co lla tion)
W hic h wil l then giv e you  thispe rfectl y com po sed SQL- Query 
SELECT 
    COAL ESCE(G RP_
 RFC_5646, ISO_639-2,
And, if you're still_saying "we"_only_make our_application_for "only one_culture" (like en-US_usually)- therefore I don't_need that extra_integer,_this would be a good time and place to mention the IANA language tags,_wouldn't_it? 
Because_they_go_like this:
de-DE-1901
de-DE-1996

and
de-CH-1901
de-CH-1996

(there was an orthography_reform in 1996...)
Try finding a_word in_a dictionary if it is misspelled; this becomes_very_important in applications_dealing with legal and public service portals.
More importantly, there_are regions that are changing from_cyrillic to latin_alphabets,_which_may just be more_troublesome than the superficial nuisance of_some obscure orthography reform, which is_why this might be an important consideration_too, depending on which country you_live in. One way or_the other,_it's better to have that_integer in there,_just in_case...
Edit:
And by adding_ON DELETE CASCADE  after
REFERENCES dbo.T_Products(_PROD_Id )

you can_simply say: DELETE FROM T_Products, and_get_no foreign key_violation.
As_for_collation, I'd_do it like_this:
A)_Have your_own_DAL
B) Save the desired collation name_in_the language table 
You might want to_put the collations in_their_own table, e.g.:
SELECT *_FROM sys.fn_helpcollations() 
WHERE description LIKE_'%insensitive%'
AND name LIKE '%german%' 

C) Have_the collation_name available_in your auth.user.language information
D) Write your SQL like this:
SELECT 
 _  COALESCE(GRP_Name_i18n_cust, GRP_Name_i18n, GRP_Name) AS_GroupName 
FROM T_Groups 

ORDER_BY GroupName_COLLATE_{#COLLATION}

E) Then, you_can_do this_in your DAL:
cmd.CommandText = cmd.CommandText.Replace("{#COLLATION}", auth.user.language.collation)

Which will_then give_you this perfectly composed SQL-Query 
SELECT_
   _COALESCE(GRP_