Project

General

Profile

Download (10.5 KB) Statistics
| Branch: | Tag: | Revision:
1
#!/bin/sh
2
# Functions which runs commands on the system
3

    
4
. ${BACKEND}/functions.sh
5
. ${BACKEND}/functions-parse.sh
6

    
7

    
8
# Function which localizes a FreeBSD install
9
localize_freebsd()
10
{
11
  sed -i.bak "s/lang=en_US/lang=${LOCALE}/g" ${FSMNT}/etc/login.conf
12
  rm ${FSMNT}/etc/login.conf.bak
13
};
14

    
15

    
16
# Function which localizes a PC-BSD install
17
localize_pcbsd()
18
{
19
  #Change the skel files
20
  ##########################################################################
21
  sed -i.bak "s/Country=us/Country=${COUNTRY}/g" ${FSMNT}/usr/share/skel/.kde4/share/config/kdeglobals
22
  sed -i.bak "s/Country=us/Country=${COUNTRY}/g" ${FSMNT}/root/.kde4/share/config/kdeglobals
23
  sed -i.bak "s/Language=en_US/Language=${SETLANG}:${LOCALE}/g" ${FSMNT}/usr/share/skel/.kde4/share/config/kdeglobals
24
  sed -i.bak "s/Language=en_US/Language=${SETLANG}:${LOCALE}/g" ${FSMNT}/root/.kde4/share/config/kdeglobals
25

    
26
  #Change KDM Langs
27
  ##########################################################################
28
  sed -i.bak "s/Language=en_US/Language=${LOCALE}.UTF-8/g" ${FSMNT}/usr/local/kde4/share/config/kdm/kdmrc
29

    
30
  # Check if we have a localized splash screen and copy it
31
  if [ -e "${FSMNT}/usr/PCBSD/splash-screens/loading-screen-${SETLANG}.pcx" ]
32
  then
33
    cp ${FSMNT}/usr/PCBSD/splash-screens/loading-screen-${SETLANG}.pcx ${FSMNT}/boot/loading-screen.pcx    
34
  fi
35

    
36
};
37

    
38
localize_x_keyboard()
39
{
40
   KEYMOD="$1"
41
   KEYLAY="$2"
42
   KEYVAR="$3"
43
   COUNTRY="$4"
44
   SETXKBMAP=""
45

    
46
   if [ "${COUNTRY}" = "NONE" ] || [ "${COUNTRY}" = "us" ];
47
   then
48
     #In this case we don't need any additional language
49
     COUNTRY=""
50
   else
51
     COUNTRY=",${COUNTRY}"
52
   fi
53

    
54
   if [ "${KEYMOD}" != "NONE" ]
55
   then
56
     SETXKBMAP="-model ${KEYMOD}"
57
     KXMODEL="${KEYMOD}"
58
   else
59
     KXMODEL="pc104"
60
   fi
61

    
62
   if [ "${KEYLAY}" != "NONE" ]
63
   then
64
     localize_key_layout "$KEYLAY"
65
     SETXKBMAP="${SETXKBMAP} -layout ${KEYLAY}"
66
     KXLAYOUT="${KEYLAY}"
67
   else
68
     KXLAYOUT="us"
69
   fi
70

    
71
   if [ "${KEYVAR}" != "NONE" ]
72
   then
73
     SETXKBMAP="${SETXKBMAP} -variant ${KEYVAR}"
74
     KXVAR="(${KEYVAR})"
75
   else
76
     KXVAR=""
77
   fi
78

    
79
   # Setup .xprofile with our setxkbmap call now
80
   if [ ! -z "${SETXKBMAP}" ]
81
   then
82
     if [ ! -e "${FSMNT}/usr/share/skel/.xprofile" ]
83
     then
84
       echo "#!/bin/sh" >${FSMNT}/usr/share/skel/.xprofile
85
     fi
86

    
87
     # Save the keyboard layout for user / root X logins
88
     echo "setxkbmap ${SETXKBMAP}" >>${FSMNT}/usr/share/skel/.xprofile
89
     chmod 755 ${FSMNT}/usr/share/skel/.xprofile
90
     cp ${FSMNT}/usr/share/skel/.xprofile ${FSMNT}/root/.xprofile
91

    
92
     # Save it for KDM
93
     echo "setxkbmap ${SETXKBMAP}" >>${FSMNT}/usr/local/kde4/share/config/kdm/Xsetup
94
   fi
95
 
96

    
97
   # Create the kxkbrc configuration using these options
98
   echo "[Layout]
99
DisplayNames=${KXLAYOUT}${COUNTRY}
100
IndicatorOnly=false
101
LayoutList=${KXLAYOUT}${KXVAR}${COUNTRY}
102
Model=${KXMODEL}
103
Options=
104
ResetOldOptions=true
105
ShowFlag=true
106
ShowSingle=false
107
SwitchMode=WinClass
108
Use=true " >${FSMNT}/usr/share/skel/.kde4/share/config/kxkbrc
109

    
110
};
111

    
112
localize_key_layout()
113
{
114

    
115
  KEYLAYOUT="$1"
116

    
117
  # Set the keylayout in rc.conf
118
  case ${KEYLAYOUT} in
119
    am) KEYLAYOUT_CONSOLE="hy.armscii-8" ;;
120
    ch) KEYLAYOUT_CONSOLE="swissgerman.iso" ;;
121
    cz) KEYLAYOUT_CONSOLE="cz.iso2" ;;
122
    de) KEYLAYOUT_CONSOLE="german.iso" ;;
123
    dk) KEYLAYOUT_CONSOLE="danish.iso" ;;
124
    ee) KEYLAYOUT_CONSOLE="estonian.iso" ;;
125
    es) KEYLAYOUT_CONSOLE="spanish.iso" ;;
126
    fi) KEYLAYOUT_CONSOLE="finnish.iso" ;;
127
    is) KEYLAYOUT_CONSOLE="icelandic.iso" ;;
128
    jp) KEYLAYOUT_CONSOLE="jp.106" ;;
129
    nl) KEYLAYOUT_CONSOLE="dutch.iso.acc" ;;
130
    no) KEYLAYOUT_CONSOLE="norwegian.iso" ;;
131
    pl) KEYLAYOUT_CONSOLE="pl_PL.ISO8859-2" ;;
132
    ru) KEYLAYOUT_CONSOLE="ru.koi8-r" ;;
133
    sk) KEYLAYOUT_CONSOLE="sk.iso2" ;;
134
    se) KEYLAYOUT_CONSOLE="swedish.iso" ;;
135
    tr) KEYLAYOUT_CONSOLE="tr.iso9.q" ;;
136
    gb) KEYLAYOUT_CONSOLE="uk.iso" ;;
137
     *)  if [ ! -z "${KEYLAYOUT}" ]
138
         then
139
           KEYLAYOUT_CONSOLE="${KEYLAYOUT}.iso"
140
         fi
141
        ;;
142
  esac
143

    
144
  if [ ! -z "${KEYLAYOUT_CONSOLE}" ]
145
  then
146
    echo "keymap=\"${KEYLAYOUT_CONSOLE}\"" >>${FSMNT}/etc/rc.conf
147
  fi
148

    
149
};
150

    
151
#  Function which prunes other l10n files from the KDE install
152
localize_prune_langs()
153
{
154
  get_value_from_cfg localizeLang
155
  KEEPLANG="$VAL"
156
  if [ -z "$KEEPLANG" ] ; then
157
    KEEPLANG="en"
158
  fi
159
  export KEEPLANG 
160

    
161
  echo_log "Pruning other l10n files, keeping ${KEEPLANG}"
162

    
163
  # Create the script to do uninstalls
164
  echo '#!/bin/sh
165

    
166
  for i in `pkg_info | grep "kde-l10n" | cut -d " " -f 1`
167
  do
168
    echo "$i" | grep "${KEEPLANG}-kde"
169
    if [ "$?" != "0" ] ; then
170
      pkg_delete ${i}
171
    fi
172
  done
173
  ' > ${FSMNT}/.pruneLangs.sh
174

    
175
  chmod 755 ${FSMNT}/.pruneLangs.sh
176
  chroot ${FSMNT} /.pruneLangs.sh >/dev/null 2>/dev/null
177
  rm ${FSMNT}/.pruneLangs.sh
178

    
179
};
180

    
181
# Function which sets COUNTRY SETLANG and LOCALE based upon $1
182
localize_get_codes()
183
{ 
184
  TARGETLANG="${1}"
185
  # Setup the presets for the specific lang
186
  case $TARGETLANG in
187
   af) COUNTRY="C"
188
       SETLANG="af"
189
       LOCALE="af_ZA"
190
       ;;
191
   ar) COUNTRY="C"
192
       SETLANG="ar"
193
       LOCALE="en_US"
194
       ;;
195
   az) COUNTRY="C"
196
       SETLANG="az"
197
       LOCALE="en_US"
198
       ;;
199
   ca) COUNTRY="es"
200
       SETLANG="es:ca"
201
       LOCALE="ca_ES"
202
       ;;
203
   be) COUNTRY="be"
204
       SETLANG="be"
205
       LOCALE="be_BY"
206
       ;;
207
   bn) COUNTRY="bn"
208
       SETLANG="bn"
209
       LOCALE="en_US"
210
       ;;
211
   bg) COUNTRY="bg"
212
       SETLANG="bg"
213
       LOCALE="bg_BG"
214
       ;;
215
   cs) COUNTRY="cz"
216
       SETLANG="cs"
217
       LOCALE="cs_CZ"
218
       ;;
219
   da) COUNTRY="dk"
220
       SETLANG="da"
221
       LOCALE="da_DK"
222
       ;;
223
   de) COUNTRY="de"
224
       SETLANG="de"
225
       LOCALE="de_DE"
226
       ;;
227
   en_GB) COUNTRY="gb"
228
       SETLANG="en_GB:cy"
229
       LOCALE="en_GB"
230
       ;;
231
   el) COUNTRY="gr"
232
       SETLANG="el:gr"
233
       LOCALE="el_GR"
234
       ;;
235
   es) COUNTRY="es"
236
       SETLANG="es"
237
       LOCALE="es_ES"
238
       ;;
239
   es_LA) COUNTRY="us"
240
          SETLANG="es:en_US"
241
          LOCALE="es_ES"
242
       ;;
243
   et) COUNTRY="ee"
244
       SETLANG="et"
245
       LOCALE="et_EE"
246
       ;;
247
   fr) COUNTRY="fr"
248
       SETLANG="fr"
249
       LOCALE="fr_FR"
250
       ;;
251
   he) COUNTRY="il"
252
       SETLANG="he:ar"
253
       LOCALE="he_IL"
254
       ;;
255
   hr) COUNTRY="hr"
256
       SETLANG="hr"
257
       LOCALE="hr_HR"
258
       ;;
259
   hu) COUNTRY="hu"
260
       SETLANG="hu"
261
       LOCALE="hu_HU"
262
       ;;
263
   it) COUNTRY="it"
264
       SETLANG="it"
265
       LOCALE="it_IT"
266
       ;;
267
   ja) COUNTRY="jp"
268
       SETLANG="ja"
269
       LOCALE="ja_JP"
270
       ;;
271
   ko) COUNTRY="kr"
272
       SETLANG="ko"
273
       LOCALE="ko_KR"
274
       ;;
275
   nl) COUNTRY="nl"
276
       SETLANG="nl"
277
       LOCALE="nl_NL"
278
       ;;
279
   nn) COUNTRY="no"
280
       SETLANG="nn"
281
       LOCALE="en_US"
282
       ;;
283
   pa) COUNTRY="pa"
284
       SETLANG="pa"
285
       LOCALE="en_US"
286
       ;;
287
   pl) COUNTRY="pl"
288
       SETLANG="pl"
289
       LOCALE="pl_PL"
290
       ;;
291
   pt) COUNTRY="pt"
292
       SETLANG="pt"
293
       LOCALE="pt_PT"
294
       ;;
295
   pt_BR) COUNTRY="br"
296
          SETLANG="pt_BR"
297
          LOCALE="pt_BR"
298
       ;;
299
   ru) COUNTRY="ru"
300
       SETLANG="ru"
301
       LOCALE="ru_RU"
302
       ;;
303
   sl) COUNTRY="si"
304
       SETLANG="sl"
305
       LOCALE="sl_SI"
306
       ;;
307
   sk) COUNTRY="sk"
308
       SETLANG="sk"
309
       LOCALE="sk_SK"
310
       ;;
311
   sv) COUNTRY="se"
312
       SETLANG="sv"
313
       LOCALE="sv_SE"
314
       ;;
315
   uk) COUNTRY="ua"
316
       SETLANG="uk"
317
       LOCALE="uk_UA"
318
       ;;
319
   vi) COUNTRY="vn"
320
       SETLANG="vi"
321
       LOCALE="en_US"
322
       ;;
323
   zh_CN) COUNTRY="cn"
324
          SETLANG="zh_CN"
325
          LOCALE="zh_CN"
326
       ;;
327
   zh_TW) COUNTRY="tw"
328
          SETLANG="zh_TW"
329
          LOCALE="zh_TW"
330
       ;;
331
   *) COUNTRY="C"
332
      SETLANG="${TARGETLANG}"
333
      LOCALE="en_US"
334
      ;;
335
  esac
336

    
337
 export COUNTRY SETLANG LOCALE
338

    
339
};
340

    
341
# Function which sets the timezone on the system
342
set_timezone()
343
{
344
  TZONE="$1"
345
  cp ${FSMNT}/usr/share/zoneinfo/${TZONE} ${FSMNT}/etc/localtime
346
};
347

    
348
# Function which enables / disables NTP
349
set_ntp()
350
{
351
  ENABLED="$1"
352
  if [ "$ENABLED" = "yes" -o "${ENABLED}" = "YES" ]
353
  then
354
    cat ${FSMNT}/etc/rc.conf 2>/dev/null | grep 'ntpd_enable="YES"' >/dev/null 2>/dev/null
355
    if [ "$?" != "0" ]
356
    then
357
      echo 'ntpd_enable="YES"' >>${FSMNT}/etc/rc.conf
358
      echo 'ntpd_sync_on_start="YES"' >>${FSMNT}/etc/rc.conf
359
    fi
360
  else
361
    cat ${FSMNT}/etc/rc.conf 2>/dev/null | grep 'ntpd_enable="YES"' >/dev/null 2>/dev/null
362
    if [ "$?" != "0" ]
363
    then
364
      sed -i.bak 's|ntpd_enable="YES"||g' ${FSMNT}/etc/rc.conf
365
    fi
366
  fi
367
};
368

    
369
# Starts checking for localization directives
370
run_localize()
371
{
372
  KEYLAYOUT="NONE"
373
  KEYMOD="NONE"
374
  KEYVAR="NONE"
375
  LANGUAGE="NONE"
376

    
377
  while read line
378
  do
379
    # Check if we need to do any localization
380
    echo $line | grep "^localizeLang=" >/dev/null 2>/dev/null
381
    if [ "$?" = "0" ]
382
    then
383

    
384
      # Set our country / lang / locale variables
385
      get_value_from_string "$line"
386
      localize_get_codes ${VAL}
387

    
388
      get_value_from_string "$line"
389
      # If we are doing PC-BSD install, localize it as well as FreeBSD base
390
      if [ "${INSTALLTYPE}" != "FreeBSD" ]
391
      then
392
        localize_pcbsd "$VAL"
393
        LANGUAGE="$VAL"
394
      fi
395
      localize_freebsd "$VAL"
396
    fi
397

    
398
    # Check if we need to do any keylayouts
399
    echo $line | grep "^localizeKeyLayout=" >/dev/null 2>/dev/null
400
    if [ "$?" = "0" ] ; then
401
      get_value_from_string "$line"
402
      KEYLAYOUT="$VAL"
403
    fi
404

    
405
    # Check if we need to do any key models
406
    echo $line | grep "^localizeKeyModel=" >/dev/null 2>/dev/null
407
    if [ "$?" = "0" ] ; then
408
      get_value_from_string "$line"
409
      KEYMOD="$VAL"
410
    fi
411

    
412
    # Check if we need to do any key variant
413
    echo $line | grep "^localizeKeyVariant=" >/dev/null 2>/dev/null
414
    if [ "$?" = "0" ] ; then
415
      get_value_from_string "$line"
416
      KEYVAR="$VAL"
417
    fi
418

    
419

    
420
    # Check if we need to set a timezone
421
    echo $line | grep "^timeZone=" >/dev/null 2>/dev/null
422
    if [ "$?" = "0" ] ; then
423
      get_value_from_string "$line"
424
      set_timezone "$VAL"
425
    fi
426

    
427
    # Check if we need to set a timezone
428
    echo $line | grep "^enableNTP=" >/dev/null 2>/dev/null
429
    if [ "$?" = "0" ] ; then
430
      get_value_from_string "$line"
431
      set_ntp "$VAL"
432
    fi
433
  done <${CFGF}
434

    
435
  if [ "${INSTALLTYPE}" != "FreeBSD" ] ; then
436
    # Do our X keyboard localization
437
    localize_x_keyboard "${KEYMOD}" "${KEYLAYOUT}" "${KEYVAR}" "${COUNTRY}"
438
  fi
439

    
440
  # Check if we want to prunt any other KDE lang files to save some disk space
441
  get_value_from_cfg localizePrune
442
  if [ "${VAL}" = "yes" -o "${VAL}" = "YES" ] ; then
443
    localize_prune_langs
444
  fi
445

    
446
  # Update the login.conf db, even if we didn't localize, its a good idea to make sure its up2date
447
  run_chroot_cmd "/usr/bin/cap_mkdb /etc/login.conf" >/dev/null 2>/dev/null
448

    
449
};
(6-6/18)