japanese language support

This commit is contained in:
Mike 2024-12-19 20:21:36 -06:00
parent bf30c90840
commit a7e208fc23
20 changed files with 913 additions and 14 deletions

4
.gitignore vendored
View file

@ -91,8 +91,4 @@ todo-old.txt
tools/ido5.3_compiler/usr/lib/libc.so.1
/.vs
buildInfo.txt
tools/custom/**
fonts/**
*.db

View file

@ -1139,8 +1139,8 @@ static const struct BuiltinTexInfo sDynosBuiltinTexs[] = {
define_builtin_tex(waluigi_texture_eyes_down, "actors/waluigi/custom_waluigi_eyes_down_unused.rgba16.png", 64, 32, 16),
define_builtin_tex(waluigi_texture_eyes_dead, "actors/waluigi/custom_waluigi_eyes_dead.rgba16.png", 64, 32, 16),
// DJUI
define_builtin_tex(texture_font_normal, "textures/custom_font/custom_font_normal.rgba32.png", 256, 128, 32),
define_builtin_tex(texture_font_aliased, "textures/custom_font/custom_font_aliased.rgba32.png", 512, 256, 32),
define_builtin_tex(texture_font_normal, "textures/custom_font/custom_font_normal.rgba32.png", 256, 512, 32),
define_builtin_tex(texture_font_aliased, "textures/custom_font/custom_font_aliased.rgba32.png", 512, 1024, 32),
define_builtin_tex(texture_font_title, "textures/custom_font/custom_font_title.rgba32.png", 1024, 512, 32),
define_builtin_tex(texture_font_hud, "textures/custom_font/custom_font_normal.rgba32.png", 512, 512, 32),
define_builtin_tex(texture_font_hud_recolor, "textures/custom_font/custom_font_aliased.rgba32.png", 512, 512, 32),

View file

@ -376,6 +376,16 @@ MUTE_FOCUS_LOSS = "Ztlumit, když je okno na pozadí"
[LANGUAGE]
LANGUAGE = "JAZYK"
Czech = "Čeština"
Dutch = "Dutch (Nederlands)"
French = "French (Français)"
German = "German (Deutsch)"
Italian = "Italian (Italiano)"
Japanese = "Japanese (日本語)"
Polish = "Polish (Polski)"
Portuguese = "Portuguese (Português)"
Russian = "Russian (Русский)"
Spanish = "Spanish (Español)"
[LOBBIES]
PUBLIC_LOBBIES = "VEREJNE HRY"

View file

@ -376,6 +376,16 @@ MUTE_FOCUS_LOSS = "Dempen wanneer venster niet meer scherp is"
[LANGUAGE]
LANGUAGE = "TAAL"
Czech = "Czech (Čeština)"
Dutch = "Nederlands"
French = "French (Français)"
German = "German (Deutsch)"
Italian = "Italian (Italiano)"
Japanese = "Japanese (日本語)"
Polish = "Polish (Polski)"
Portuguese = "Portuguese (Português)"
Russian = "Russian (Русский)"
Spanish = "Spanish (Español)"
[LOBBIES]
PUBLIC_LOBBIES = "PUBLIEKE LOBBIES"

View file

@ -379,6 +379,16 @@ MUTE_FOCUS_LOSS = "Mute When Window Unfocused"
[LANGUAGE]
LANGUAGE = "LANGUAGE"
Czech = "Czech (Čeština)"
Dutch = "Dutch (Nederlands)"
French = "French (Français)"
German = "German (Deutsch)"
Italian = "Italian (Italiano)"
Japanese = "Japanese (日本語)"
Polish = "Polish (Polski)"
Portuguese = "Portuguese (Português)"
Russian = "Russian (Русский)"
Spanish = "Spanish (Español)"
[LOBBIES]
PUBLIC_LOBBIES = "PUBLIC LOBBIES"

View file

@ -376,6 +376,16 @@ MUTE_FOCUS_LOSS = "Muet en arrière plan"
[LANGUAGE]
LANGUAGE = "LANGUE"
Czech = "Czech (Čeština)"
Dutch = "Dutch (Nederlands)"
French = "Français"
German = "German (Deutsch)"
Italian = "Italian (Italiano)"
Japanese = "Japanese (日本語)"
Polish = "Polish (Polski)"
Portuguese = "Portuguese (Português)"
Russian = "Russian (Русский)"
Spanish = "Spanish (Español)"
[LOBBIES]
PUBLIC_LOBBIES = "PARTIES\nPUBLIQUES"

View file

@ -376,6 +376,16 @@ MUTE_FOCUS_LOSS = "Stumm wenn nicht fokussiert"
[LANGUAGE]
LANGUAGE = "SPRACHE"
Czech = "Czech (Čeština)"
Dutch = "Dutch (Nederlands)"
French = "French (Français)"
German = "Deutsch"
Italian = "Italian (Italiano)"
Japanese = "Japanese (日本語)"
Polish = "Polish (Polski)"
Portuguese = "Portuguese (Português)"
Russian = "Russian (Русский)"
Spanish = "Spanish (Español)"
[LOBBIES]
PUBLIC_LOBBIES = "ÖFFENTLICHE\nLOBBIES"

View file

@ -374,6 +374,16 @@ MUTE_FOCUS_LOSS = "Disattiva l'audio quando la finestra non è a fuoco"
[LANGUAGE]
LANGUAGE = "LINGUA"
Czech = "Czech (Čeština)"
Dutch = "Dutch (Nederlands)"
French = "French (Français)"
German = "German (Deutsch)"
Italian = "Italiano"
Japanese = "Japanese (日本語)"
Polish = "Polish (Polski)"
Portuguese = "Portuguese (Português)"
Russian = "Russian (Русский)"
Spanish = "Spanish (Español)"
[LOBBIES]
PUBLIC_LOBBIES = "PUBLIC LOBBIES"

394
lang/Japanese.ini Normal file
View file

@ -0,0 +1,394 @@
[NOTIF]
CONNECTED = "@は入った"
DISCONNECTED = "@は抜けた"
LEFT_THIS_LEVEL = "@はこのレベルから去った"
ENTERED_THIS_LEVEL = "@はこのレベルに入った"
ENTERED = "@は\n#に入った"
SERVER_CLOSED = "\\#ffa0a0\\抜けた:\\#dcdcdc\\ サーバーが停止された"
DISCORD_ERROR = "Discordがエラーを吐いた。\n修正するには、\n1. ゲームを終了。\n2. Discordを再起動。\n3. ゲームを始める。"
DISCORD_DETECT = "\\#ffa0a0\\エラー:\\#dcdcdc\\ Discordが検出されていない。\n\\#a0a0a0\\ゲームを終了し、Discordを再起動して、もう一度ゲームを開いてみてください。"
DISCONNECT_FULL = "\\#ffa0a0\\抜けた:\\#dcdcdc\\ サーバーが満員です"
DISCONNECT_KICK = "\\#ffa0a0\\抜けた:\\#dcdcdc\\ 強制退出された"
DISCONNECT_BAN = "\\#ffa0a0\\抜けた:\\#dcdcdc\\ バンされた"
DISCONNECT_REJOIN = "\\#ffa0a0\\抜けた:\\#dcdcdc\\ 再接続…"
DISCONNECT_CLOSED = "\\#ffa0a0\\抜けた:\\#dcdcdc\\ ホストが接続を切断した"
DISCONNECT_BIG_MOD = "サーバーが大きいすぎるモッドがあった。\n終了中。"
DIED = "@は死んだ"
DEBUG_FLY = "@はデバッグの自由フライトのモードに入った"
IMPORT_MOD_SUCCESS = "'@'\n\\#a0ffa0\\モッドを読み込んだ\\#dcdcdc\\"
IMPORT_DYNOS_SUCCESS = "'@'\n\\#a0ffa0\\DynOSのパックを読み込んだ\\#dcdcdc\\"
IMPORT_PALETTE_SUCCESS = "'@'\n\\#a0ffa0\\パレットのプリセットを読み込んだ\\#dcdcdc\\"
IMPORT_FAIL = "'@'\n\\#ffa0a0\\読み込みに失敗しました。\\#dcdcdc\\"
IMPORT_FAIL_INGAME = "\\#ffa0a0\\ゲーム中に読み込めない"
COOPNET_CONNECTION_FAILED = "\\#ffa0a0\\CoopNetに接続できない"
COOPNET_DISCONNECTED = "\\#ffa0a0\\CoopNetへの接続に失敗しました"
LOBBY_NOT_FOUND = "\\#ffa0a0\\エラー:\\#dcdcdc\\ ロビーはもう存在しない!"
LOBBY_JOIN_FAILED = "\\#ffa0a0\\ロビー参加に失敗しました!"
LOBBY_PASSWORD_INCORRECT = "\\#ffa0a0\\違うパスワードが入力された!"
COOPNET_VERSION = "\\#ffa0a0\\あなたの版はもうCoopNetの対応がない。アップデートしてください"
PEER_FAILED = "\\#ffa0a0\\'@'への接続に失敗しました。"
UNKNOWN = "未知"
LOBBY_HOST = "ロビーのホスト"
UPDATE_AVAILABLE = "新アップデートが利用可能です!"
LATEST_VERSION = "最新版"
YOUR_VERSION = "あなたの版"
[CHAT]
KICKING = "'@'が強制退出されている!"
BANNING = "'@'久バンされている!"
SERVER_ONLY = "サーバーだけがこのコマンドを実行できる。"
PERM_BANNING = "'@'が永久バンされている!"
ADD_MODERATOR = "'@'がモデレータに追加されている!"
PLAYERS = "プレイヤー"
NO_PERMS = "このコマンドを実行する許可がありません。"
PLAYER_NOT_FOUND = "プレイヤーが見つからない。"
NAMETAGS_MISSING_PARAMETERS = "引数がない: [OPTION]"
SELF_KICK = "あなたは強制退させられない。"
SELF_BAN = "あなたはバンさせられない。"
SELF_MOD = "あなたはモデレータになれない。"
KICK_CONFIRM = "本当に'@'を強制退出しますか?\n強制退出するには'\\#a0ffa0\\/confirm\\#fff982\\'と入力してください。"
BAN_CONFIRM = "本当に'@'をバンしますか?\nバンするには'\\#a0ffa0\\/confirm\\#fff982\\'と入力してください。"
PERM_BAN_CONFIRM = "本当に'@'を永久バンしますか?\nバンするには'\\#a0ffa0\\/confirm\\#fff982\\'と入力してください。"
MOD_CONFIRM = "本当に'@'をモデレータにしますか?\n'\\#a0ffa0\\/confirm\\#fff982\\'と入力してください。"
PLAYERS_DESC = "/players - プレイヤーの名前とIDのリストを表示する"
KICK_DESC = "/kick [NAME|ID] - このプレイヤーをゲームから強制退出する。"
BAN_DESC = "/ban [NAME|ID] - このプレイヤーをゲームからバンする。"
PERM_BAN_DESC = "/permban [NAME|ID] - このプレイヤーをあなたのすべてのゲームからバンする。"
MOD_DESC = "/moderator [NAME|ID] - このプレイヤーに/kick、/ban、/permbanのようなコマンドの使用を許可する。"
NAMETAGS_DESC = "/nametags [show-tag|show-health] - あなたの体力や名前タグが表示するかどうかを変更する。"
UNRECOGNIZED = "未知のコマンドです。"
MOD_GRANTED = "\\#fff982\\あなたはモデレーターです。"
[MENU]
BACK = "戻る"
CANCEL = "キャンセル"
NO = "いいえ"
YES = "はい"
[CAMERA]
CAMERA = "CAMERA"
FREE_CAMERA = "自由カメラ"
ANALOG_CAMERA = "アナログカメラ"
MOUSE_LOOK = "マウスを使う"
INVERT_X = "Xを逆転"
INVERT_Y = "Yを逆転"
X_SENSITIVITY = "Xの感度"
Y_SENSITIVITY = "Yの感度"
AGGRESSION = "かたさ"
PAN_LEVEL = "流し撮りのレベル"
DECELERATION = "げんそく"
[CONTROLS]
CONTROLS = "CONTROLS"
N64_BINDS = "N64の操作"
EXTRA_BINDS = "別の操作"
BACKGROUND_GAMEPAD = "バックグラウンドのゲームパッド"
DISABLE_GAMEPADS = "ゲームパッドを無効化"
GAMEPAD = "ゲームパッド"
DEADZONE = "デットゾーン"
RUMBLE_STRENGTH = "ランブルの強さ"
CHAT = "チャット"
PLAYERS = "プレイヤー"
D_UP = "上の十字ボタン"
D_DOWN = "下の十字ボタン"
D_LEFT = "左の十字ボタン"
D_RIGHT = "右の十字ボタン"
X = "X"
Y = "Y"
CONSOLE = "コンソール"
PREV = "前のページ"
NEXT = "次のページ"
DISCONNECT = "抜ける"
UP = "上"
DOWN = "下"
LEFT = "左"
RIGHT = "右"
A = "A"
B = "B"
START = "スタート"
L = "L"
R = "R"
Z = "Z"
C_UP = "上のCボタン"
C_DOWN = "下のCボタン"
C_LEFT = "左のCボタン"
C_RIGHT = "右のCボタン"
[DISPLAY]
DISPLAY = "DISPLAY"
FULLSCREEN = "全画面"
FORCE_4BY3 = "強制4:3"
PRELOAD_TEXTURES = "テクスチャをプリロード"
VSYNC = "VSYNC"
UNCAPPED_FRAMERATE = "フレームレートの限定がない"
FRAME_LIMIT = "フレームレートの限定"
FAST = "早い"
ACCURATE = "正確"
INTERPOLATION = "補間"
NEAREST = "ニアレスト"
LINEAR = "バイリニア"
TRIPOINT = "トライリニア"
FILTERING = "フィルタリング"
D0P5X = "0.5x"
D1X = "1x"
D1P5X = "1.5x"
D3X = "3x"
D10X = "10x"
D100X = "100x"
DRAW_DISTANCE = "描画距離"
DYNOS_PACKS = "DynOSのパック"
ANTIALIASING = "アンチエイリアス"
OFF = "オフ"
MUST_RESTART = "変更を適用するためにゲームを再起動してください"
SHOW_FPS = "FPSを表示"
[DJUI_THEMES]
DJUI_THEME = "DJUI テーマ"
DJUI_SCALE = "DJUI サイズ"
DJUI_FONT = "DJUI フォント"
AUTO = "自動"
CENTER = "DJUI 中心"
FONT_NORMAL = "ふつう"
FONT_ALIASED = "エイリアス"
LIGHT_THEME = "ライト"
DARK_THEME = "ダーク"
MARIO_THEME = "マリオ"
ODYSSEY_THEME = "オデッセイ"
FILE_SELECT_THEME = "ファイル選択"
[DYNOS]
DYNOS = "DYNOS"
LOCAL_PLAYER_MODEL_ONLY = "ローカルのキャラモデルのみ"
[HOST_MESSAGE]
INFO_TITLE = "INFO"
WARN_DISCORD = ""
WARN_DISCORD2 = ""
WARN_SOCKET = "ファイアウォールの設定が適切であることを確認してください。\n直接接続には、IPv4のインバウンド接続を受信するようにポート転送を設定する\\#ffa0a0\\必要\\#dcdcdc\\がある。\n\nUDPポート'%d'番を開放してください。IPv6も対応されています。"
HOST = "ホスト"
[HOST_MODS]
ROMHACKS = "ROMHACKS"
MODS = "MODS"
WARNING = "\\#ffffa0\\<注意>\\#dcdcdc\\ モッド数が10以上なので、ラグや不安定さをふせぐためにいくつか無効にしてください"
[HOST_SAVE]
SAVE_TITLE = "SAVE"
ERASE_TITLE = "ERASE"
CONFIRM = "本当に消しますか?"
ERASE = "消す"
EDIT = "変更"
EDIT_TITLE = "EDIT"
EDIT_NAME = "ファイル@の名前を変更:"
[HOST_SETTINGS]
SETTINGS = "SETTINGS"
NONSOLID = "ない"
SOLID = "衝突"
FRIENDLY_FIRE = "同士討ち"
PLAYER_INTERACTION = "プレイヤーの交流"
WEAK = "弱い"
NORMAL = "ふつう"
TOO_MUCH = "強すぎる"
KNOCKBACK_STRENGTH = "ノックバックの強さ"
LEAVE_LEVEL = "レベルから出る"
STAY_IN_LEVEL = "レベルをつづく"
NONSTOP = "ノンストップ"
ON_STAR_COLLECTION = "スターゲットする時"
SKIP_INTRO_CUTSCENE = "イントロをスキップ"
ENABLE_CHEATS = "チートのトグル"
BUBBLE_ON_DEATH = "死のバブル"
NAMETAGS = "名前タグ"
BOUNCY_BOUNDS_ON_CAP = "オン(制限付き)"
BOUNCY_BOUNDS_ON = "オン"
BOUNCY_BOUNDS_OFF = "オフ"
BOUNCY_LEVEL_BOUNDS = "緩いレベルの境界"
AMOUNT_OF_PLAYERS = "プレイヤー数"
PAUSE_ANYWHERE = "どこでも一時停止"
[HOST]
SERVER_TITLE = "SERVER"
HOST_TITLE = "HOST"
DISCORD = "Discord"
DIRECT_CONNECTION = "直接接続"
COOPNET = "CoopNet"
NETWORK_SYSTEM = "ネットワークのシステム"
PORT = "ポート"
PASSWORD = "パスワード"
SAVE_SLOT = "セーブのスロット"
SETTINGS = "設定"
MODS = "モッド & ゲームモード"
ROMHACKS = "Rom-Hacks"
APPLY = "OK"
HOST = "ホスト"
[JOIN_MESSAGE]
JOINING = "JOINING"
[JOIN]
JOIN_TITLE = "JOIN"
JOIN_DISCORD = ""
JOIN_SOCKET = "\\#d0d0ff\\直接接続\\#dcdcdc\\のIPとポートを入力してください:"
JOIN = "入る"
PUBLIC_LOBBIES = "公開のロビー"
PRIVATE_LOBBIES = "非公開のロビー"
DIRECT = "直接接続"
[RULES]
RULES_TITLE = "RULES"
RULE_1 = "1. 13歳以上であること。"
RULE_2 = "2. ヘイトスピーチ、中傷、攻撃的な言葉を使わないこと。"
RULE_3 = "3. 改造されたビルドが使用しないこと。"
RULE_4 = "4. 作者の許可なく、非公開のモッドを公開しないこと。"
RULE_5 = "5. いかなるエッチのコンテンツは禁止。"
SUBJECT_TO_CHANGE = "このルールは新アップデートで変更される可能性がある。"
NOTICE = "CoopNetに接続すると、公開ロビーでこのルールを守ることに同意します。"
RULES = "ルール"
[MAIN]
QUIT_TITLE = "QUIT"
QUIT_CONFIRM = "本当に終了しますか?"
HOST = "ホスト"
JOIN = "参加"
OPTIONS = "オプション"
QUIT = "終了"
[MENU_OPTIONS]
MENU_TITLE = "MENU"
LEVEL = "レベル"
STAFF_ROLL = "スタッフロール"
MUSIC = "音楽"
RANDOM_STAGE = "ランダムのステージ"
PLAY_VANILLA_DEMOS = "バニラのデモを再生"
[MISC]
DEBUG_TITLE = "DEBUG"
FIXED_COLLISIONS = "直した当たり判定"
LUA_PROFILER = "Luaのプロファイラ"
CTX_PROFILER = "Ctxのプロファイラ"
DEBUG_PRINT = "デバッグのプリント"
DEBUG_INFO = "デバッグの情報"
DEBUG_ERRORS = "デバッグのエラー"
MISC_TITLE = "MISC"
PAUSE_IN_SINGLEPLAYER = "ソロプレイに一時停止"
DISABLE_POPUPS = "ポップアップを無効化"
USE_STANDARD_KEY_BINDINGS_CHAT = "初期のチャットの操作"
MENU_OPTIONS = "メニューのオプション"
INFORMATION = "情報"
DEBUG = "デバッグ"
LANGUAGE = "言語"
COOP_COMPATIBILITY = "sm64ex-coop対応"
R_BUTTON = "Rボタン - オプション"
[INFORMATION]
INFORMATION_TITLE = "INFO"
CHANGELOG = "変更りれき"
[CONSOLE]
CONSOLE = "CONSOLE"
[MODLIST]
MODS = "MODS"
[OPTIONS]
OPTIONS = "OPTIONS"
PLAYER = "プレイヤー"
CAMERA = "カメラ"
CONTROLS = "操作"
DISPLAY = "ディスプレイ"
SOUND = "サウンド"
MISC = "ざつ"
USER_FOLDER = "ユーザのフォルダを開く"
APPDATA = "AppDataを開く"
[PAUSE]
QUIT_TITLE = "QUIT"
QUIT_HOST = "本当に停止しますか?"
QUIT_CLIENT = "本当に抜けますか?"
PAUSE_TITLE = "PAUSE"
PLAYER = "プレイヤー"
DYNOS_PACKS = "DynOSのパック"
OPTIONS = "オプション"
CHEATS = "チート"
SERVER_SETTINGS = "サーバーの設定"
RESUME = "つづく"
STOP_HOSTING = "停止"
DISCONNECT = "抜ける"
MOD_MENU = "モッドのメニュー"
MOD_MENU_TITLE = "MOD MENU"
[PLAYER]
PLAYER_TITLE = "PLAYER"
OVERALLS = "オーバーオール"
SHIRT = "シャツ"
GLOVES = "手袋"
SHOES = "くつ"
HAIR = "ヘア"
SKIN = "はだ"
CAP = "帽子"
EMBLEM = "エンブレム"
PALETTE = "PALETTE"
PART = "部分"
HEX_CODE = "十六進のコード"
RED = "赤"
GREEN = "緑"
BLUE = "青"
PLAYER = "プレイヤー"
NAME = "名前"
MODEL = "キャラクター"
PALETTE_PRESET = "パレットのプリセット"
EDIT_PALETTE = "パレットを変更"
PRESET_NAME = "プリセットの名前"
DELETE_PRESET = "プリセットを消す"
SAVE_PRESET = "プリセットをセーブ"
CAP_TOGGLE = "帽子をかぶるのはZボタンで切り替え"
[PALETTE]
CUSTOM = "自作"
[PLAYER_LIST]
PLAYERS = "PLAYERS"
NAME = "名前"
LOCATION = "ところ"
ACT = "アクト"
[SOUND]
SOUND = "SOUND"
MASTER_VOLUME = "全部の音量"
MUSIC_VOLUME = "音楽の音量"
SFX_VOLUME = "音響の音量"
ENV_VOLUME = "環境音の音量"
FADEOUT = "遠い音をフェードアウト"
MUTE_FOCUS_LOSS = "ウィンドウのフォーカスが外れるとミュート"
[LANGUAGE]
LANGUAGE = "LANGUAGE"
Czech = "チェコ語 (Čeština)"
Dutch = "オランダ語 (Nederlands)"
English = "英語 (English)"
French = "フランス語 (Français)"
German = "ドイツ語 (Deutsch)"
Italian = "イタリア語 (Italiano)"
Japanese = "日本語"
Polish = "ポーランド語 (Polski)"
Portuguese = "ポルトガル語 (Português)"
Russian = "ロシア語 (Русский)"
Spanish = "スペイン語 (Español)"
[LOBBIES]
PUBLIC_LOBBIES = "PUBLIC LOBBIES"
PRIVATE_LOBBIES = "PRIVATE LOBBIES"
REFRESH = "リフレッシュ"
REFRESHING = "リフレッシュ中…"
ENTER_PASSWORD = "非公開のロビーのパスを入力してください:"
SEARCH = "サーチ"
NONE_FOUND = "ロビーが見つかりません"
[CHANGELOG]
CHANGELOG_TITLE = "CHANGELOG"

View file

@ -376,6 +376,16 @@ MUTE_FOCUS_LOSS = "Wycisz dźwięk, gdy okno traci fokus"
[LANGUAGE]
LANGUAGE = "JĘZYK"
Czech = "Czech (Čeština)"
Dutch = "Dutch (Nederlands)"
French = "French (Français)"
German = "German (Deutsch)"
Italian = "Italian (Italiano)"
Japanese = "Japanese (日本語)"
Polish = "Polski"
Portuguese = "Portuguese (Português)"
Russian = "Russian (Русский)"
Spanish = "Spanish (Español)"
[LOBBIES]
PUBLIC_LOBBIES = "GRY PUBLICZNE"

View file

@ -367,6 +367,16 @@ MUTE_FOCUS_LOSS = "Silenciar quando a janela estiver desfocada"
[LANGUAGE]
LANGUAGE = "IDIOMA"
Czech = "Czech (Čeština)"
Dutch = "Dutch (Nederlands)"
French = "French (Français)"
German = "German (Deutsch)"
Italian = "Italian (Italiano)"
Japanese = "Japanese (日本語)"
Polish = "Polish (Polski)"
Portuguese = "Português"
Russian = "Russian (Русский)"
Spanish = "Spanish (Español)"
[LOBBIES]
PUBLIC_LOBBIES = "PARTIDAS\nPUBLICAS"

View file

@ -375,6 +375,16 @@ MUTE_FOCUS_LOSS = "Выключить звук когда окно не выбр
[LANGUAGE]
LANGUAGE = "LANGUAGE"
Czech = "Czech (Čeština)"
Dutch = "Dutch (Nederlands)"
French = "French (Français)"
German = "German (Deutsch)"
Italian = "Italian (Italiano)"
Japanese = "Japanese (日本語)"
Polish = "Polish (Polski)"
Portuguese = "Portuguese (Português)"
Russian = "Русский"
Spanish = "Spanish (Español)"
[LOBBIES]
PUBLIC_LOBBIES = "PUBLIC LOBBIES"

View file

@ -376,6 +376,16 @@ MUTE_FOCUS_LOSS = "Silenciar sonido cuando la ventana está desenfocada"
[LANGUAGE]
LANGUAGE = "IDIOMA"
Czech = "Czech (Čeština)"
Dutch = "Dutch (Nederlands)"
French = "French (Français)"
German = "German (Deutsch)"
Italian = "Italian (Italiano)"
Japanese = "Japanese (日本語)"
Polish = "Polish (Polski)"
Portuguese = "Portuguese (Português)"
Russian = "Russian (Русский)"
Spanish = "Español"
[LOBBIES]
PUBLIC_LOBBIES = "PARTIDAS\nPÚBLICAS"

View file

@ -16,7 +16,7 @@ static void djui_font_normal_render_char(char* c) {
u32 ty = index / 32;
extern ALIGNED8 const u8 texture_font_normal[];
djui_gfx_render_texture_tile(texture_font_normal, 256, 128, 32, tx * 8, ty * 16, 8, 16, false);
djui_gfx_render_texture_tile(texture_font_normal, 256, 512, 32, tx * 8, ty * 16, 8, 16, false);
}
static f32 djui_font_normal_char_width(char* c) {
@ -147,7 +147,7 @@ static void djui_font_aliased_render_char(char* c) {
u32 ty = index / 32;
extern ALIGNED8 const u8 texture_font_aliased[];
djui_gfx_render_texture_tile(texture_font_aliased, 512, 256, 32, tx * 16, ty * 32, 16, 32, false);
djui_gfx_render_texture_tile(texture_font_aliased, 512, 1024, 32, tx * 16, ty * 32, 16, 32, false);
}
static f32 djui_font_aliased_char_width(char* c) {

View file

@ -34,6 +34,11 @@ char* djui_language_get(const char *section, const char *key) {
return value;
}
char* djui_language_find_key(const char* section, const char* value) {
if (!sLang) return NULL;
return ini_find_key(sLang, section, value);
}
void djui_language_replace(char* src, char* dst, int size, char key, char* value) {
char tmpChar[10] = { 0 };
char* c = src;

View file

@ -4,5 +4,6 @@
bool djui_language_init(char* lang);
/* |description|Gets a language `key` from a `section`|descriptionEnd| */
char* djui_language_get(const char *section, const char *key);
char* djui_language_find_key(const char* section, const char* value);
void djui_language_replace(char* src, char* dst, int size, char key, char* value);
void djui_language_replace2(char* src, char* dst, int size, char key1, char* value1, char key2, char* value2);
void djui_language_replace2(char* src, char* dst, int size, char key1, char* value1, char key2, char* value2);

View file

@ -33,9 +33,13 @@ static void select_language(struct DjuiBase* caller) {
tmp->base.interactable->update_style(&tmp->base);
child = child->next;
}
char* langName = checkbox->text->message;
char* key = djui_language_find_key("LANGUAGE",langName);
if (key) langName = key;
if (strcmp(configLanguage, checkbox->text->message)) {
snprintf(configLanguage, MAX_CONFIG_STRING, "%s", checkbox->text->message);
if (strcmp(configLanguage, langName)) {
snprintf(configLanguage, MAX_CONFIG_STRING, "%s", langName);
sLanguageChanged = true;
smlua_call_event_hooks_string_param(HOOK_ON_LANGUAGE_CHANGED, configLanguage);
}
@ -133,7 +137,19 @@ void djui_panel_language_create(struct DjuiBase* caller) {
bool match = !strcmp(path, configLanguage);
if (match) { foundMatch = true; }
struct DjuiCheckbox* checkbox = djui_checkbox_create(sLayoutBase, path, match ? &sTrue : &sFalse, select_language);
struct DjuiCheckbox* checkbox = NULL;
char* displayName = djui_language_get("LANGUAGE",path);
if (displayName != (char*)path) {
char newName[SYS_MAX_PATH + 32] = { 0 };
snprintf(newName, SYS_MAX_PATH + 32, "%s", displayName);
checkbox = djui_checkbox_create(sLayoutBase, newName, match ? &sTrue : &sFalse, select_language);
}
else {
checkbox = djui_checkbox_create(sLayoutBase, path, match ? &sTrue : &sFalse, select_language);
}
if (!strcmp(path, "English")) { chkEnglish = checkbox; }
}

View file

@ -8,7 +8,7 @@
#define SPRITE_INDEX_START_CHAR '!'
struct SmCodeGlyph {
char unicode[3];
char unicode[4];
char base;
f32 width;
u32 spriteIndex;
@ -176,6 +176,361 @@ struct SmCodeGlyph sSmCodeGlyphs[] = {
{ "ї", 'l', 0, 0 },
{ "Ґ", 'R', 0, 0 },
{ "ґ", 'R', 0, 0 },
{ "", 8, 18, 0 },
{ "", 8, 18, 0 },
{ "", 8, 18, 0 },
{ "", 8, 18, 0 },
{ "", 8, 18, 0 },
{ "", 8, 18, 0 },
{ "", 8, 18, 0 },
{ "", 8, 18, 0 },
{ "", 8, 18, 0 },
{ "", 8, 18, 0 },
{ "", 8, 18, 0 },
{ "", 8, 18, 0 },
{ "", 8, 18, 0 },
{ "", 8, 18, 0 },
{ "", 8, 18, 0 },
{ "", 8, 18, 0 },
{ "", 8, 18, 0 },
{ "", 8, 18, 0 },
{ "", 8, 18, 0 },
{ "", 8, 18, 0 },
{ "", 8, 18, 0 },
{ "", 8, 18, 0 },
{ "", 8, 18, 0 },
{ "", 8, 18, 0 },
{ "", 8, 18, 0 },
{ "", 8, 18, 0 },
{ "", 8, 18, 0 },
{ "", 8, 18, 0 },
{ "", 8, 18, 0 },
{ "", 8, 18, 0 },
{ "", 8, 18, 0 },
{ "", 8, 18, 0 },
{ "", 8, 18, 0 },
{ "", 8, 18, 0 },
{ "", 8, 18, 0 },
{ "", 8, 18, 0 },
{ "", 8, 18, 0 },
{ "", 8, 18, 0 },
{ "", 8, 18, 0 },
{ "", 8, 18, 0 },
{ "", 8, 18, 0 },
{ "", 8, 18, 0 },
{ "", 8, 18, 0 },
{ "", 8, 18, 0 },
{ "", 8, 18, 0 },
{ "", 8, 18, 0 },
{ "", 8, 18, 0 },
{ "", 8, 18, 0 },
{ "", 8, 18, 0 },
{ "", 8, 18, 0 },
{ "", 8, 18, 0 },
{ "", 8, 18, 0 },
{ "", 8, 18, 0 },
{ "", 8, 18, 0 },
{ "", 8, 18, 0 },
{ "", 8, 18, 0 },
{ "", 8, 18, 0 },
{ "", 8, 18, 0 },
{ "", 8, 18, 0 },
{ "", 8, 18, 0 },
{ "", 8, 18, 0 },
{ "", 8, 18, 0 },
{ "", 8, 18, 0 },
{ "", 8, 18, 0 },
{ "", 8, 18, 0 },
{ "", 8, 18, 0 },
{ "", 8, 18, 0 },
{ "", 8, 18, 0 },
{ "", 8, 18, 0 },
{ "", 8, 18, 0 },
{ "", 8, 18, 0 },
{ "", 8, 18, 0 },
{ "", 8, 18, 0 },
{ "", 8, 18, 0 },
{ "", 8, 18, 0 },
{ "", 8, 18, 0 },
{ "", 8, 18, 0 },
{ "", 8, 18, 0 },
{ "", 8, 18, 0 },
{ "", 8, 18, 0 },
{ "", 8, 18, 0 },
{ "", 8, 18, 0 },
{ "", 8, 18, 0 },
{ "", 8, 18, 0 },
{ "", 8, 18, 0 },
{ "", 8, 18, 0 },
{ "", 8, 18, 0 },
{ "", 8, 18, 0 },
{ "", 8, 18, 0 },
{ "", 8, 18, 0 },
{ "", 8, 18, 0 },
{ "", 8, 18, 0 },
{ "", 8, 18, 0 },
{ "", 8, 18, 0 },
{ "", 8, 18, 0 },
{ "", 8, 18, 0 },
{ "", 8, 18, 0 },
{ "", 8, 18, 0 },
{ "", 8, 18, 0 },
{ "", 8, 18, 0 },
{ "", 8, 18, 0 },
{ "", 8, 18, 0 },
{ "", 8, 18, 0 },
{ "", 8, 18, 0 },
{ "", 8, 18, 0 },
{ "", 8, 18, 0 },
{ "", 8, 18, 0 },
{ "", 8, 18, 0 },
{ "", 8, 18, 0 },
{ "", 8, 18, 0 },
{ "", 8, 18, 0 },
{ "", 8, 18, 0 },
{ "", 8, 18, 0 },
{ "", 8, 18, 0 },
{ "", 8, 18, 0 },
{ "", 8, 18, 0 },
{ "", 8, 18, 0 },
{ "", 8, 18, 0 },
{ "", 8, 18, 0 },
{ "", 8, 18, 0 },
{ "", 8, 18, 0 },
{ "", 8, 18, 0 },
{ "", 8, 18, 0 },
{ "", 8, 18, 0 },
{ "", 8, 18, 0 },
{ "", 8, 18, 0 },
{ "", 8, 18, 0 },
{ "", 8, 18, 0 },
{ "", 8, 18, 0 },
{ "", 8, 18, 0 },
{ "", 8, 18, 0 },
{ "", 8, 18, 0 },
{ "", 8, 18, 0 },
{ "", 8, 18, 0 },
{ "", 8, 18, 0 },
{ "", 8, 18, 0 },
{ "", 8, 18, 0 },
{ "", 8, 18, 0 },
{ "", 8, 18, 0 },
{ "", 8, 18, 0 },
{ "", 8, 18, 0 },
{ "", 8, 18, 0 },
{ "", 8, 18, 0 },
{ "", 8, 18, 0 },
{ "", 8, 18, 0 },
{ "", 8, 18, 0 },
{ "", 8, 18, 0 },
{ "", 8, 18, 0 },
{ "", 8, 18, 0 },
{ "", 8, 18, 0 },
{ "", 8, 18, 0 },
{ "", 8, 18, 0 },
{ "", 8, 18, 0 },
{ "", 8, 18, 0 },
{ "", 8, 18, 0 },
{ "", 8, 18, 0 },
{ "", 8, 18, 0 },
{ "", 8, 18, 0 },
{ "", 8, 18, 0 },
{ "", 8, 18, 0 },
{ "", 8, 18, 0 },
{ "", 8, 18, 0 },
{ "", 8, 18, 0 },
{ "", 8, 18, 0 },
{ "", 8, 18, 0 },
{ "", 8, 18, 0 },
{ "", 8, 18, 0 },
{ "", 8, 18, 0 },
{ "", 8, 18, 0 },
{ "", 8, 18, 0 },
{ "", 8, 18, 0 },
{ "", 8, 18, 0 },
{ "", 8, 18, 0 },
{ "", 8, 18, 0 },
{ "", 8, 18, 0 },
{ "", 8, 18, 0 },
{ "", 8, 18, 0 },
{ "", 8, 18, 0 },
{ "", 8, 18, 0 },
{ "", 8, 18, 0 },
{ "使", 8, 18, 0 },
{ "", 8, 18, 0 },
{ "", 8, 18, 0 },
{ "", 8, 18, 0 },
{ "", 8, 18, 0 },
{ "", 8, 18, 0 },
{ "", 8, 18, 0 },
{ "", 8, 18, 0 },
{ "", 8, 18, 0 },
{ "", 8, 18, 0 },
{ "", 8, 18, 0 },
{ "", 8, 18, 0 },
{ "", 8, 18, 0 },
{ "", 8, 18, 0 },
{ "", 8, 18, 0 },
{ "", 8, 18, 0 },
{ "", 8, 18, 0 },
{ "", 8, 18, 0 },
{ "", 8, 18, 0 },
{ "", 8, 18, 0 },
{ "", 8, 18, 0 },
{ "", 8, 18, 0 },
{ "", 8, 18, 0 },
{ "", 8, 18, 0 },
{ "", 8, 18, 0 },
{ "", 8, 18, 0 },
{ "", 8, 18, 0 },
{ "", 8, 18, 0 },
{ "", 8, 18, 0 },
{ "", 8, 18, 0 },
{ "", 8, 18, 0 },
{ "", 8, 18, 0 },
{ "", 8, 18, 0 },
{ "", 8, 18, 0 },
{ "", 8, 18, 0 },
{ "", 8, 18, 0 },
{ "", 8, 18, 0 },
{ "", 8, 18, 0 },
{ "", 8, 18, 0 },
{ "", 8, 18, 0 },
{ "", 8, 18, 0 },
{ "", 8, 18, 0 },
{ "", 8, 18, 0 },
{ "", 8, 18, 0 },
{ "", 8, 18, 0 },
{ "", 8, 18, 0 },
{ "", 8, 18, 0 },
{ "", 8, 18, 0 },
{ "", 8, 18, 0 },
{ "", 8, 18, 0 },
{ "", 8, 18, 0 },
{ "", 8, 18, 0 },
{ "", 8, 18, 0 },
{ "", 8, 18, 0 },
{ "", 8, 18, 0 },
{ "", 8, 18, 0 },
{ "", 8, 18, 0 },
{ "", 8, 18, 0 },
{ "", 8, 18, 0 },
{ "", 8, 18, 0 },
{ "", 8, 18, 0 },
{ "", 8, 18, 0 },
{ "", 8, 18, 0 },
{ "", 8, 18, 0 },
{ "", 8, 18, 0 },
{ "", 8, 18, 0 },
{ "", 8, 18, 0 },
{ "", 8, 18, 0 },
{ "", 8, 18, 0 },
{ "", 8, 18, 0 },
{ "", 8, 18, 0 },
{ "", 8, 18, 0 },
{ "", 8, 18, 0 },
{ "", 8, 18, 0 },
{ "", 8, 18, 0 },
{ "", 8, 18, 0 },
{ "", 8, 18, 0 },
{ "", 8, 18, 0 },
{ "", 8, 18, 0 },
{ "", 8, 18, 0 },
{ "", 8, 18, 0 },
{ "", 8, 18, 0 },
{ "", 8, 18, 0 },
{ "", 8, 18, 0 },
{ "", 8, 18, 0 },
{ "", 8, 18, 0 },
{ "", 8, 18, 0 },
{ "", 8, 18, 0 },
{ "", 8, 18, 0 },
{ "", 8, 18, 0 },
{ "", 8, 18, 0 },
{ "", 8, 18, 0 },
{ "", 8, 18, 0 },
{ "", 8, 18, 0 },
{ "", 8, 18, 0 },
{ "", 8, 18, 0 },
{ "", 8, 18, 0 },
{ "", 8, 18, 0 },
{ "", 8, 18, 0 },
{ "", 8, 18, 0 },
{ "", 8, 18, 0 },
{ "", 8, 18, 0 },
{ "", 8, 18, 0 },
{ "", 8, 18, 0 },
{ "", 8, 18, 0 },
{ "", 8, 18, 0 },
{ "", 8, 18, 0 },
{ "", 8, 18, 0 },
{ "", 8, 18, 0 },
{ "", 8, 18, 0 },
{ "", 8, 18, 0 },
{ "", 8, 18, 0 },
{ "", 8, 18, 0 },
{ "", 8, 18, 0 },
{ "", 8, 18, 0 },
{ "", 8, 18, 0 },
{ "", 8, 18, 0 },
{ "", 8, 18, 0 },
{ "", 8, 18, 0 },
{ "", 8, 18, 0 },
{ "", 8, 18, 0 },
{ "", 8, 18, 0 },
{ "", 8, 18, 0 },
{ "", 8, 18, 0 },
{ "", 8, 18, 0 },
{ "", 8, 18, 0 },
{ "", 8, 18, 0 },
{ "", 8, 18, 0 },
{ "", 8, 18, 0 },
{ "", 8, 18, 0 },
{ "", 8, 18, 0 },
{ "", 8, 18, 0 },
{ "", 8, 18, 0 },
{ "", 8, 18, 0 },
{ "", 8, 18, 0 },
{ "", 8, 18, 0 },
{ "", 8, 18, 0 },
{ "", 8, 18, 0 },
{ "", 8, 18, 0 },
{ "", 8, 18, 0 },
{ "", 8, 18, 0 },
{ "", 8, 18, 0 },
{ "", 8, 18, 0 },
{ "", 8, 18, 0 },
{ "", 8, 18, 0 },
{ "", 8, 18, 0 },
{ "", 8, 18, 0 },
{ "退", 8, 18, 0 },
{ "", 8, 18, 0 },
{ "", 8, 18, 0 },
{ "", 8, 18, 0 },
{ "", 8, 18, 0 },
{ "", 8, 18, 0 },
{ "", 8, 18, 0 },
{ "", 8, 18, 0 },
{ "", 8, 18, 0 },
{ "", 8, 18, 0 },
{ "", 8, 18, 0 },
{ "", 8, 18, 0 },
{ "", 8, 18, 0 },
{ "", 8, 18, 0 },
{ "", 8, 18, 0 },
{ "", 8, 18, 0 },
{ "", 8, 18, 0 },
{ "", 8, 18, 0 },
{ "", 8, 18, 0 },
{ "", 8, 18, 0 },
{ "", 8, 18, 0 },
{ "", 8, 18, 0 },
{ "", 8, 18, 0 },
{ "", 8, 18, 0 },
{ "", 8, 18, 0 },
{ "", 8, 18, 0 },
{ "", 8, 18, 0 },
};
struct SmCodeGlyph sSmCodeDuplicateGlyphs[] = {
@ -222,7 +577,6 @@ static u64 convert_unicode_char_to_u64(char* text) {
value <<= 8;
value |= (u8)*(++text);
bytes--;
text++;
}
return value;
}

View file

@ -219,6 +219,38 @@ void ini_free(ini_t *ini) {
free(ini);
}
/**
* Finds first key with matching value
* @return string of key name
*/
const char* ini_find_key(ini_t *ini, const char* section, const char* value) {
char *current_section = "";
char *val;
char *p = ini->data;
if (*p == '\0') {
p = next(ini, p);
}
while (p < ini->end) {
if (*p == '[') {
current_section = p + 1;
}
else {
val = next(ini, p);
if (!section || !strcmpci(section, current_section)) {
if (!strcmpci(val,value)) {
return p;
}
}
p = val;
}
p = next(ini,p);
}
return NULL;
}
/**
* Gets value by specified key and section.
* @return string with the key.

View file

@ -21,5 +21,6 @@ ini_t* ini_load(const char *filename);
void ini_free(ini_t *ini);
const char* ini_get(ini_t *ini, const char *section, const char *key);
int ini_sget(ini_t *ini, const char *section, const char *key, const char *scanfmt, void *dst);
const char* ini_find_key(ini_t *ini, const char* section, const char* value);
#endif