-loading language font mappings from file now, for scripts. Still needs to be done for the keybindings menu

This commit is contained in:
GIR GIR 2021-11-11 01:34:33 -08:00
parent 1566d62886
commit 9960d49d00
1 changed files with 46 additions and 46 deletions

View File

@ -1,5 +1,4 @@
# Classes for translating text similar to GNU gettext # Classes for translating text similar to GNU gettext
# Translator class: translate text to another language # Translator class: translate text to another language
# for debug REMOVE BEFORE COMMITTING / BUILDING # for debug REMOVE BEFORE COMMITTING / BUILDING
@ -7,19 +6,8 @@
class Language class Language
FONT_WESTERN = 'Terminus (TTF)' FONT_WESTERN = 'Terminus (TTF)'
FONT_CK = 'WenQuanYi Micro Hei'
FONT_J = 'HigashiOme Gothic regular' FONT_J = 'HigashiOme Gothic regular'
LANG_WESTERN = [ LANGUAGES = []
'en', 'fr', 'pt_BR', 'es'
]
LANG_J = [
'ja'
]
LANG_CK = [
'ko', 'zh_CN'
]
LANGUAGES = (LANG_WESTERN + LANG_CK + LANG_J)
class << self class << self
def set(lc) def set(lc)
dbg_print(lc.lang) dbg_print(lc.lang)
@ -27,47 +15,42 @@ class Language
@tr = nil @tr = nil
script = nil script = nil
[lc.full.to_s, lc.lang.to_s].each do |name| [lc.full.to_s, lc.lang.to_s].each do |name|
path = "Languages/#{name}.pot" path = "Languages/#{name}.po"
dbg_print(path) dbg_print(path)
if FileTest.exist?(path) if FileTest.exist?(path)
load_pot(path) load_pot(path)
if LANG_CK.include? name loadFontMap
Font.default_name = FONT_CK Font.default_name = @languageFontMap[name]
elsif LANG_J.include? name
Font.default_name = FONT_J
else
Font.default_name = FONT_WESTERN
end
Journal.setLang(name) Journal.setLang(name)
dbg_print(Font.default_name) dbg_print(Font.default_name)
break break
end end
end end
reset_fonts(@text_sprites) reset_fonts(@text_sprites)
Oneshot.set_yes_no(tr('Yes'), tr('No')) Oneshot.set_yes_no(tr('Yes'), tr('No'))
end end
def load_pot(path) def load_pot(path)
msgid = nil msgid = nil
msgstr = nil msgstr = nil
@data = Hash.new @data = Hash.new
if FileTest.exist?(path) if FileTest.exist?(path)
File.readlines(path).each do |line| File.readlines(path).each do |line|
if line.start_with?("msgid ") if line.start_with?("msgid ")
line = line[6..-1] line = line[6..-1]
#unescape the string #unescape the string
eval("msgid = " + line) eval("msgid = " + line)
elsif line.start_with?("msgstr ") elsif line.start_with?("msgstr ")
line = line[7..-1] line = line[7..-1]
#unescape the string #unescape the string
eval("msgstr = " + line) eval("msgstr = " + line)
if !(msgid.nil? || msgid.empty?) if !(msgid.nil? || msgid.empty?)
@data[Oneshot::crc32(msgid)] = msgstr @data[Oneshot::crc32(msgid)] = msgstr
end end
end end
end end
end end
end end
# Translate some text # Translate some text
def tr(string) def tr(string)
@ -81,6 +64,23 @@ class Language
return String.new(rv) return String.new(rv)
end end
def loadFontMap
if !@fontMapLoaded
@languageFontMap = Hash.new
path = "Languages/language_fonts.ini"
if FileTest.exist?(path)
File.readlines(path).each do |line|
parts = line.split("=", 2)
if parts.length == 2
LANGUAGES.push(parts[0])
@languageFontMap[parts[0]] = parts[1].strip
end
end
end
@fontMapLoaded = true
end
end
# Turn all database items into translatable strings # Turn all database items into translatable strings
def initialize_database def initialize_database
$data_actors.each do |i| $data_actors.each do |i|
@ -116,7 +116,7 @@ class Language
if sprites.kind_of?(Array) if sprites.kind_of?(Array)
sprites.each do |spr| sprites.each do |spr|
if spr.kind_of?(Sprite) and !spr.disposed? if spr.kind_of?(Sprite) and !spr.disposed?
spr.bitmap.font.name = Font.default_name spr.bitmap.font.name = Font.default_name
end end
end end
elsif sprites.kind_of?(Hash) elsif sprites.kind_of?(Hash)