language.go 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. package tool
  2. import (
  3. "database/sql"
  4. "log"
  5. "os"
  6. jsoniter "github.com/json-iterator/go"
  7. )
  8. func Get_language(db *sql.DB, data string, safe bool) string {
  9. var json = jsoniter.ConfigCompatibleWithStandardLibrary
  10. m_db := Temp_DB_connect()
  11. defer m_db.Close()
  12. var language string
  13. err := db.QueryRow(DB_change("select data from other where name = 'language'")).Scan(&language)
  14. if err != nil {
  15. if err == sql.ErrNoRows {
  16. language = "ko-KR"
  17. } else {
  18. log.Fatal(err)
  19. }
  20. }
  21. var language_data string
  22. stmt, err := m_db.Prepare("select data from temp where name = ?")
  23. if err != nil {
  24. log.Fatal(err)
  25. }
  26. defer stmt.Close()
  27. err = stmt.QueryRow("lang_" + language + "_" + data).Scan(&language_data)
  28. if err != nil {
  29. if err == sql.ErrNoRows {
  30. language_data = ""
  31. } else {
  32. log.Fatal(err)
  33. }
  34. }
  35. if language_data != "" {
  36. if safe {
  37. return language_data
  38. } else {
  39. return HTML_escape(language_data)
  40. }
  41. } else {
  42. file, err := os.Open("./lang/" + language + ".json")
  43. if err != nil {
  44. log.Fatal(err)
  45. }
  46. defer file.Close()
  47. lang_data := map[string]string{}
  48. decoder := json.NewDecoder(file)
  49. if err := decoder.Decode(&lang_data); err != nil {
  50. log.Fatal(err)
  51. }
  52. if _, ok := lang_data[data]; ok {
  53. if safe {
  54. return lang_data[data]
  55. } else {
  56. return HTML_escape(lang_data[data])
  57. }
  58. } else {
  59. log.Default().Println(data + " (" + language + ")")
  60. return data + " (" + language + ")"
  61. }
  62. }
  63. }