mirror of
https://github.com/coop-deluxe/sm64coopdx.git
synced 2025-01-22 07:32:07 -05:00
Japanese Support (#574)
* server console with commands * better unicode support and japanese translation * Update README.md * restore unneeded changes * missed this * extra * restore * remove extra line * spacing * japanese aliased * language display names * Update .gitignore * japanese language support * more common kanji * merging new images * fix line conflicts * again * redefinition removal * Update djui_font.c * Update djui_font.c * Update djui_font.c * separated japanese glyphs and images * Update .gitignore * Update djui_font.c * Revert "Update djui_font.c" This reverts commitab2ad8c189
. * Revert "separated japanese glyphs and images" This reverts commitc3d0fd40e3
. * recombined sheets * Update djui_font.c * Update djui_font.c * Update djui_font.c * separated japanese glyphs and images * Update Japanese.ini --------- Co-authored-by: Isaac0-dev <62234577+Isaac0-dev@users.noreply.github.com>
This commit is contained in:
parent
0ef9ae742e
commit
735a7ec7a7
26 changed files with 3296 additions and 15 deletions
|
@ -3,6 +3,14 @@
|
||||||
#include "game/ingame_menu.h"
|
#include "game/ingame_menu.h"
|
||||||
#include "make_const_nonconst.h"
|
#include "make_const_nonconst.h"
|
||||||
|
|
||||||
|
ALIGNED8 const u8 texture_font_jp[] = {
|
||||||
|
#include "textures/custom_font/custom_font_jp.rgba32.inc.c"
|
||||||
|
};
|
||||||
|
|
||||||
|
ALIGNED8 const u8 texture_font_jp_aliased[] = {
|
||||||
|
#include "textures/custom_font/custom_font_jp_aliased.rgba32.inc.c"
|
||||||
|
};
|
||||||
|
|
||||||
ALIGNED8 const u8 texture_font_normal[] = {
|
ALIGNED8 const u8 texture_font_normal[] = {
|
||||||
#include "textures/custom_font/custom_font_normal.rgba32.inc.c"
|
#include "textures/custom_font/custom_font_normal.rgba32.inc.c"
|
||||||
};
|
};
|
||||||
|
|
|
@ -1546,6 +1546,8 @@ extern ALIGNED8 const Texture texture_font_hud_recolor[];
|
||||||
extern ALIGNED8 const Texture texture_font_special[];
|
extern ALIGNED8 const Texture texture_font_special[];
|
||||||
extern ALIGNED8 const Texture texture_selectionbox_back_icon[];
|
extern ALIGNED8 const Texture texture_selectionbox_back_icon[];
|
||||||
extern ALIGNED8 const Texture texture_selectionbox_forward_icon[];
|
extern ALIGNED8 const Texture texture_selectionbox_forward_icon[];
|
||||||
|
extern ALIGNED8 const Texture texture_font_jp[];
|
||||||
|
extern ALIGNED8 const Texture texture_font_jp_aliased[];
|
||||||
extern ALIGNED8 const Texture texture_coopdx_logo[];
|
extern ALIGNED8 const Texture texture_coopdx_logo[];
|
||||||
extern ALIGNED8 const Texture pss_seg7_texture_07000000[];
|
extern ALIGNED8 const Texture pss_seg7_texture_07000000[];
|
||||||
extern ALIGNED8 const Texture pss_seg7_texture_07000800[];
|
extern ALIGNED8 const Texture pss_seg7_texture_07000800[];
|
||||||
|
|
|
@ -1138,13 +1138,16 @@ static const struct BuiltinTexInfo sDynosBuiltinTexs[] = {
|
||||||
define_builtin_tex(waluigi_texture_eyes_up, "actors/waluigi/custom_waluigi_eyes_up_unused.rgba16.png", 64, 32, 16),
|
define_builtin_tex(waluigi_texture_eyes_up, "actors/waluigi/custom_waluigi_eyes_up_unused.rgba16.png", 64, 32, 16),
|
||||||
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_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),
|
define_builtin_tex(waluigi_texture_eyes_dead, "actors/waluigi/custom_waluigi_eyes_dead.rgba16.png", 64, 32, 16),
|
||||||
|
|
||||||
// DJUI
|
// DJUI
|
||||||
define_builtin_tex(texture_font_normal, "textures/custom_font/custom_font_normal.rgba32.png", 256, 128, 32),
|
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_aliased, "textures/custom_font/custom_font_aliased.rgba32.png", 512, 256, 32),
|
||||||
define_builtin_tex(texture_font_title, "textures/custom_font/custom_font_title.rgba32.png", 1024, 512, 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, "textures/custom_font/custom_font_hud.rgba32.png", 512, 512, 32),
|
||||||
define_builtin_tex(texture_font_hud_recolor, "textures/custom_font/custom_font_aliased.rgba32.png", 512, 512, 32),
|
define_builtin_tex(texture_font_hud_recolor, "textures/custom_font/custom_font_hud_recolor.rgba32.png", 512, 512, 32),
|
||||||
define_builtin_tex(texture_font_special, "textures/custom_font/custom_font_special.rgba32.png", 512, 512, 32),
|
define_builtin_tex(texture_font_special, "textures/custom_font/custom_font_special.rgba32.png", 512, 512, 32),
|
||||||
|
define_builtin_tex(texture_font_jp, "textures/custom_font/custom_font_jp.rgba32.png", 512, 1024, 32),
|
||||||
|
define_builtin_tex(texture_font_jp_aliased, "textures/custom_font/custom_font_jp_aliased.rgba32.png", 1024, 2048, 32),
|
||||||
|
|
||||||
// Logo
|
// Logo
|
||||||
define_builtin_tex(texture_selectionbox_back_icon, "textures/segment2/custom_selectionbox_back_icon.rgba16.png", 16, 16, 16),
|
define_builtin_tex(texture_selectionbox_back_icon, "textures/segment2/custom_selectionbox_back_icon.rgba16.png", 16, 16, 16),
|
||||||
|
|
|
@ -379,6 +379,16 @@ MUTE_FOCUS_LOSS = "Ztlumit, když je okno na pozadí"
|
||||||
|
|
||||||
[LANGUAGE]
|
[LANGUAGE]
|
||||||
LANGUAGE = "JAZYK"
|
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]
|
[LOBBIES]
|
||||||
PUBLIC_LOBBIES = "VEREJNE HRY"
|
PUBLIC_LOBBIES = "VEREJNE HRY"
|
||||||
|
|
|
@ -379,6 +379,16 @@ MUTE_FOCUS_LOSS = "Dempen wanneer venster niet meer scherp is"
|
||||||
|
|
||||||
[LANGUAGE]
|
[LANGUAGE]
|
||||||
LANGUAGE = "TAAL"
|
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]
|
[LOBBIES]
|
||||||
PUBLIC_LOBBIES = "PUBLIEKE LOBBIES"
|
PUBLIC_LOBBIES = "PUBLIEKE LOBBIES"
|
||||||
|
|
|
@ -379,6 +379,16 @@ MUTE_FOCUS_LOSS = "Mute When Window Unfocused"
|
||||||
|
|
||||||
[LANGUAGE]
|
[LANGUAGE]
|
||||||
LANGUAGE = "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]
|
[LOBBIES]
|
||||||
PUBLIC_LOBBIES = "PUBLIC LOBBIES"
|
PUBLIC_LOBBIES = "PUBLIC LOBBIES"
|
||||||
|
|
|
@ -379,6 +379,16 @@ MUTE_FOCUS_LOSS = "Muet en arrière plan"
|
||||||
|
|
||||||
[LANGUAGE]
|
[LANGUAGE]
|
||||||
LANGUAGE = "LANGUE"
|
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]
|
[LOBBIES]
|
||||||
PUBLIC_LOBBIES = "PARTIES\nPUBLIQUES"
|
PUBLIC_LOBBIES = "PARTIES\nPUBLIQUES"
|
||||||
|
|
|
@ -379,6 +379,16 @@ MUTE_FOCUS_LOSS = "Stumm wenn nicht fokussiert"
|
||||||
|
|
||||||
[LANGUAGE]
|
[LANGUAGE]
|
||||||
LANGUAGE = "SPRACHE"
|
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]
|
[LOBBIES]
|
||||||
PUBLIC_LOBBIES = "ÖFFENTLICHE\nLOBBIES"
|
PUBLIC_LOBBIES = "ÖFFENTLICHE\nLOBBIES"
|
||||||
|
|
|
@ -377,6 +377,16 @@ MUTE_FOCUS_LOSS = "Disattiva l'audio quando la finestra non è a fuoco"
|
||||||
|
|
||||||
[LANGUAGE]
|
[LANGUAGE]
|
||||||
LANGUAGE = "LINGUA"
|
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]
|
[LOBBIES]
|
||||||
PUBLIC_LOBBIES = "PUBLIC LOBBIES"
|
PUBLIC_LOBBIES = "PUBLIC LOBBIES"
|
||||||
|
|
404
lang/Japanese.ini
Normal file
404
lang/Japanese.ini
Normal file
|
@ -0,0 +1,404 @@
|
||||||
|
[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\\ 部屋からBANされています"
|
||||||
|
DISCONNECT_REJOIN = "\\#ffa0a0\\切断されました:\\#dcdcdc\\ 再参加しようとしています…"
|
||||||
|
DISCONNECT_CLOSED = "\\#ffa0a0\\切断されました:\\#dcdcdc\\ 部屋主が接続を閉じました。"
|
||||||
|
DISCONNECT_BIG_MOD = "部屋は大きすぎたMODがあるので\n切断しています。"
|
||||||
|
DIED = "@が死んでしまった。"
|
||||||
|
DEBUG_FLY = "@がデバッグフライトモードに入りました!"
|
||||||
|
IMPORT_MOD_SUCCESS = "'@'\n\\#a0ffa0\\MODを読み込みました。\\#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 = "'@'をBANしています…"
|
||||||
|
SERVER_ONLY = "このコマンドは部屋主のみ実行できます。"
|
||||||
|
PERM_BANNING = "'@'が永久BANしています…"
|
||||||
|
ADD_MODERATOR = "'@'がモデレーターにしています。"
|
||||||
|
PLAYERS = "プレイヤー"
|
||||||
|
NO_PERMS = "このコマンドを実行する許可がありません。"
|
||||||
|
PLAYER_NOT_FOUND = "プレイヤーが見つかりませんでした。。"
|
||||||
|
NAMETAGS_MISSING_PARAMETERS = "引数が不足しています: [OPTION]が必要です。"
|
||||||
|
SELF_KICK = "自分をキックできません!"
|
||||||
|
SELF_BAN = "自分をBANできません!"
|
||||||
|
SELF_MOD = "自分をモドレーターにすることができません!"
|
||||||
|
KICK_CONFIRM = "本当に'@'を強制退出しますか?\n強制退出するには'\\#a0ffa0\\/confirm\\#fff982\\' と入力して確定する。"
|
||||||
|
BAN_CONFIRM = "本当に'@'をBANしますか?\nBANするには'\\#a0ffa0\\/confirm\\#fff982\\' と入力して確認する。"
|
||||||
|
PERM_BAN_CONFIRM = "本当に'@'を永久BANしますか?\nBANするには'\\#a0ffa0\\/confirm\\#fff982\\' と入力して確定する。"
|
||||||
|
MOD_CONFIRM = "本当に'@'をモデレータにしますか?\n'\\#a0ffa0\\/confirm\\#fff982\\' と入力して確定する。"
|
||||||
|
PLAYERS_DESC = "/players - プレイヤー名とID一覧を表示する。"
|
||||||
|
KICK_DESC = "/kick [NAME|ID] - プレイヤーを部屋からキックする。"
|
||||||
|
BAN_DESC = "/ban [NAME|ID] - プレイヤーを部屋からBANする。"
|
||||||
|
PERM_BAN_DESC = "/permban [NAME|ID] - プレイヤーをすべての部屋からBANする。"
|
||||||
|
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]
|
||||||
|
MODS = "MODS"
|
||||||
|
CATEGORIES = "カテゴリ一覧"
|
||||||
|
WARNING = "\\#ffffa0\\<注意>\\#dcdcdc\\ MOD数が10以上あるので、ラグや不安定さをふせぐためにいくつか無効にしてください"
|
||||||
|
NO_MODS_FOUND = "なにもMODが見つかりませんでした。"
|
||||||
|
|
||||||
|
[HOST_MOD_CATEGORIES]
|
||||||
|
ALL = "All"
|
||||||
|
MISC = "その他"
|
||||||
|
ROMHACKS = "ハックロム"
|
||||||
|
GAMEMODES = "ゲームモード"
|
||||||
|
MOVESETS = "技構成"
|
||||||
|
CHARACTER_SELECT = "キャラクター選択"
|
||||||
|
|
||||||
|
[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 = "ノックバックの強さ"
|
||||||
|
CLASSIC_PVP = "Classic"
|
||||||
|
REVAMPED_PVP = "Revamped"
|
||||||
|
PVP_MODE = "PvP Mode"
|
||||||
|
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 = "MOD一覧"
|
||||||
|
ROMHACKS = "ハックロム"
|
||||||
|
APPLY = "適用"
|
||||||
|
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. 作者の許可なく、非公開MODを公開しないでください。"
|
||||||
|
RULE_6 = "6. いかなるエッチなコンテンツは禁止。"
|
||||||
|
SUBJECT_TO_CHANGE = "ルールはアップデートで変更される可能性があります。"
|
||||||
|
NOTICE = "公開部屋でルールをお守りください。"
|
||||||
|
RULES = "ルールを見る"
|
||||||
|
|
||||||
|
[MAIN]
|
||||||
|
QUIT_TITLE = "QUIT"
|
||||||
|
QUIT_CONFIRM = "本当に終了しますか?"
|
||||||
|
HOST = "部屋を作る"
|
||||||
|
JOIN = "部屋に入る"
|
||||||
|
OPTIONS = "オプション"
|
||||||
|
QUIT = "終了"
|
||||||
|
|
||||||
|
[MENU_OPTIONS]
|
||||||
|
MENU_TITLE = "MENU"
|
||||||
|
LEVEL = "レベル"
|
||||||
|
STAFF_ROLL = "スタッフロール"
|
||||||
|
MUSIC = "BGM"
|
||||||
|
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メニュー"
|
||||||
|
MOD_MENU_TITLE = "MOD MENU"
|
||||||
|
|
||||||
|
[PLAYER]
|
||||||
|
PLAYER_TITLE = "PLAYER"
|
||||||
|
OVERALLS = "オーバーオール"
|
||||||
|
SHIRT = "シャツ"
|
||||||
|
GLOVES = "手袋"
|
||||||
|
SHOES = "くつ"
|
||||||
|
HAIR = "髪"
|
||||||
|
SKIN = "はだ"
|
||||||
|
CAP = "帽子"
|
||||||
|
EMBLEM = "エンブレム"
|
||||||
|
PALETTE = "PALETTE"
|
||||||
|
PART = "部分"
|
||||||
|
HEX_CODE = "16進数"
|
||||||
|
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 = "BGM音量"
|
||||||
|
SFX_VOLUME = "SE音量"
|
||||||
|
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 ROOMS"
|
||||||
|
PRIVATE_LOBBIES = "PRIVATE ROOMS"
|
||||||
|
REFRESH = "リフレッシュ"
|
||||||
|
REFRESHING = "リフレッシュ中…"
|
||||||
|
ENTER_PASSWORD = "部屋のパスワードを入力してください:"
|
||||||
|
SEARCH = "検索"
|
||||||
|
NONE_FOUND = "部屋が見つかりませんでした"
|
||||||
|
|
||||||
|
[CHANGELOG]
|
||||||
|
CHANGELOG_TITLE = "CHANGELOG"
|
|
@ -379,6 +379,16 @@ MUTE_FOCUS_LOSS = "Wycisz dźwięk, gdy okno traci fokus"
|
||||||
|
|
||||||
[LANGUAGE]
|
[LANGUAGE]
|
||||||
LANGUAGE = "JĘZYK"
|
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]
|
[LOBBIES]
|
||||||
PUBLIC_LOBBIES = "GRY PUBLICZNE"
|
PUBLIC_LOBBIES = "GRY PUBLICZNE"
|
||||||
|
|
|
@ -379,6 +379,16 @@ MUTE_FOCUS_LOSS = "Silenciar quando a janela estiver desfocada"
|
||||||
|
|
||||||
[LANGUAGE]
|
[LANGUAGE]
|
||||||
LANGUAGE = "IDIOMA"
|
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]
|
[LOBBIES]
|
||||||
PUBLIC_LOBBIES = "PARTIDAS\nPUBLICAS"
|
PUBLIC_LOBBIES = "PARTIDAS\nPUBLICAS"
|
||||||
|
|
|
@ -378,6 +378,16 @@ MUTE_FOCUS_LOSS = "Выключить звук когда окно не выбр
|
||||||
|
|
||||||
[LANGUAGE]
|
[LANGUAGE]
|
||||||
LANGUAGE = "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]
|
[LOBBIES]
|
||||||
PUBLIC_LOBBIES = "PUBLIC LOBBIES"
|
PUBLIC_LOBBIES = "PUBLIC LOBBIES"
|
||||||
|
|
|
@ -379,6 +379,16 @@ MUTE_FOCUS_LOSS = "Silenciar sonido cuando la ventana está desenfocada"
|
||||||
|
|
||||||
[LANGUAGE]
|
[LANGUAGE]
|
||||||
LANGUAGE = "IDIOMA"
|
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]
|
[LOBBIES]
|
||||||
PUBLIC_LOBBIES = "PARTIDAS\nPÚBLICAS"
|
PUBLIC_LOBBIES = "PARTIDAS\nPÚBLICAS"
|
||||||
|
|
|
@ -12,11 +12,20 @@ static void djui_font_normal_render_char(char* c) {
|
||||||
if (*c == ' ') { return; }
|
if (*c == ' ') { return; }
|
||||||
|
|
||||||
u32 index = djui_unicode_get_sprite_index(c);
|
u32 index = djui_unicode_get_sprite_index(c);
|
||||||
u32 tx = index % 32;
|
|
||||||
u32 ty = index / 32;
|
|
||||||
|
|
||||||
extern ALIGNED8 const u8 texture_font_normal[];
|
if (index & 0x010000) {
|
||||||
djui_gfx_render_texture_tile(texture_font_normal, 256, 128, 32, tx * 8, ty * 16, 8, 16, false, true);
|
index &= ~0x010000;
|
||||||
|
u32 tx = index % 64;
|
||||||
|
u32 ty = index / 64;
|
||||||
|
extern ALIGNED8 const u8 texture_font_jp[];
|
||||||
|
djui_gfx_render_texture_tile(texture_font_jp, 512, 1024, 32, tx * 8, ty * 16, 8, 16, false, true);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
u32 tx = index % 32;
|
||||||
|
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, true);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static f32 djui_font_normal_char_width(char* c) {
|
static f32 djui_font_normal_char_width(char* c) {
|
||||||
|
@ -143,11 +152,20 @@ static void djui_font_aliased_render_char(char* c) {
|
||||||
if (*c == ' ') { return; }
|
if (*c == ' ') { return; }
|
||||||
|
|
||||||
u32 index = djui_unicode_get_sprite_index(c);
|
u32 index = djui_unicode_get_sprite_index(c);
|
||||||
u32 tx = index % 32;
|
|
||||||
u32 ty = index / 32;
|
|
||||||
|
|
||||||
extern ALIGNED8 const u8 texture_font_aliased[];
|
if (index & 0x010000) {
|
||||||
djui_gfx_render_texture_tile(texture_font_aliased, 512, 256, 32, tx * 16, ty * 32, 16, 32, false, true);
|
index &= ~0x010000;
|
||||||
|
u32 tx = index % 64;
|
||||||
|
u32 ty = index / 64;
|
||||||
|
extern ALIGNED8 const u8 texture_font_jp_aliased[];
|
||||||
|
djui_gfx_render_texture_tile(texture_font_jp_aliased, 1024, 2048, 32, tx * 16, ty * 32, 16, 32, false, true);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
u32 tx = index % 32;
|
||||||
|
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, true);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static f32 djui_font_aliased_char_width(char* c) {
|
static f32 djui_font_aliased_char_width(char* c) {
|
||||||
|
|
|
@ -34,6 +34,11 @@ char* djui_language_get(const char *section, const char *key) {
|
||||||
return value;
|
return value;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
char* djui_language_find_key(const char* section, const char* value) {
|
||||||
|
if (!sLang) return NULL;
|
||||||
|
return (char*)ini_find_key(sLang, section, value);
|
||||||
|
}
|
||||||
|
|
||||||
void djui_language_replace(char* src, char* dst, int size, char key, char* value) {
|
void djui_language_replace(char* src, char* dst, int size, char key, char* value) {
|
||||||
char tmpChar[10] = { 0 };
|
char tmpChar[10] = { 0 };
|
||||||
char* c = src;
|
char* c = src;
|
||||||
|
|
|
@ -4,5 +4,6 @@
|
||||||
bool djui_language_init(char* lang);
|
bool djui_language_init(char* lang);
|
||||||
/* |description|Gets a language `key` from a `section`|descriptionEnd| */
|
/* |description|Gets a language `key` from a `section`|descriptionEnd| */
|
||||||
char* djui_language_get(const char *section, const char *key);
|
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_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);
|
||||||
|
|
|
@ -33,9 +33,13 @@ static void select_language(struct DjuiBase* caller) {
|
||||||
tmp->base.interactable->update_style(&tmp->base);
|
tmp->base.interactable->update_style(&tmp->base);
|
||||||
child = child->next;
|
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)) {
|
if (strcmp(configLanguage, langName)) {
|
||||||
snprintf(configLanguage, MAX_CONFIG_STRING, "%s", checkbox->text->message);
|
snprintf(configLanguage, MAX_CONFIG_STRING, "%s", langName);
|
||||||
sLanguageChanged = true;
|
sLanguageChanged = true;
|
||||||
smlua_call_event_hooks_string_param(HOOK_ON_LANGUAGE_CHANGED, configLanguage);
|
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);
|
bool match = !strcmp(path, configLanguage);
|
||||||
if (match) { foundMatch = true; }
|
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; }
|
if (!strcmp(path, "English")) { chkEnglish = checkbox; }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -8,7 +8,7 @@
|
||||||
#define SPRITE_INDEX_START_CHAR '!'
|
#define SPRITE_INDEX_START_CHAR '!'
|
||||||
|
|
||||||
struct SmCodeGlyph {
|
struct SmCodeGlyph {
|
||||||
char unicode[3];
|
char unicode[4];
|
||||||
char base;
|
char base;
|
||||||
f32 width;
|
f32 width;
|
||||||
u32 spriteIndex;
|
u32 spriteIndex;
|
||||||
|
@ -178,6 +178,10 @@ struct SmCodeGlyph sSmCodeGlyphs[] = {
|
||||||
{ "ґ", 'R', 0, 0 },
|
{ "ґ", 'R', 0, 0 },
|
||||||
};
|
};
|
||||||
|
|
||||||
|
struct SmCodeGlyph sSmCodeGlyphs_JP[] = {
|
||||||
|
#include "jp_glyphs.h"
|
||||||
|
};
|
||||||
|
|
||||||
struct SmCodeGlyph sSmCodeDuplicateGlyphs[] = {
|
struct SmCodeGlyph sSmCodeDuplicateGlyphs[] = {
|
||||||
{ "А", 'A', 0, 0 },
|
{ "А", 'A', 0, 0 },
|
||||||
{ "В", 'B', 0, 0 },
|
{ "В", 'B', 0, 0 },
|
||||||
|
@ -222,7 +226,6 @@ static u64 convert_unicode_char_to_u64(char* text) {
|
||||||
value <<= 8;
|
value <<= 8;
|
||||||
value |= (u8)*(++text);
|
value |= (u8)*(++text);
|
||||||
bytes--;
|
bytes--;
|
||||||
text++;
|
|
||||||
}
|
}
|
||||||
return value;
|
return value;
|
||||||
}
|
}
|
||||||
|
@ -241,6 +244,18 @@ void djui_unicode_init(void) {
|
||||||
assert(key > 127);
|
assert(key > 127);
|
||||||
hmap_put(sCharMap, key, glyph);
|
hmap_put(sCharMap, key, glyph);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//add japanese glyphs
|
||||||
|
size_t jpCount = sizeof(sSmCodeGlyphs_JP) / sizeof(sSmCodeGlyphs_JP[0]);
|
||||||
|
for (size_t i = 0; i < jpCount; i++) {
|
||||||
|
struct SmCodeGlyph* glyph = &sSmCodeGlyphs_JP[i];
|
||||||
|
glyph->spriteIndex = 0x010000 + i;
|
||||||
|
u64 key = convert_unicode_char_to_u64(glyph->unicode);
|
||||||
|
s32 bytes = count_bytes_for_char(glyph->unicode);
|
||||||
|
assert(bytes >= 2 && bytes <= 4);
|
||||||
|
assert(key > 127);
|
||||||
|
hmap_put(sCharMap, key, glyph);
|
||||||
|
}
|
||||||
|
|
||||||
// add duplicate glyphs
|
// add duplicate glyphs
|
||||||
size_t dupCount = sizeof(sSmCodeDuplicateGlyphs) / sizeof(sSmCodeDuplicateGlyphs[0]);
|
size_t dupCount = sizeof(sSmCodeDuplicateGlyphs) / sizeof(sSmCodeDuplicateGlyphs[0]);
|
||||||
|
|
2676
src/pc/djui/jp_glyphs.h
Normal file
2676
src/pc/djui/jp_glyphs.h
Normal file
File diff suppressed because it is too large
Load diff
32
src/pc/ini.c
32
src/pc/ini.c
|
@ -219,6 +219,38 @@ void ini_free(ini_t *ini) {
|
||||||
free(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.
|
* Gets value by specified key and section.
|
||||||
* @return string with the key.
|
* @return string with the key.
|
||||||
|
|
|
@ -21,5 +21,6 @@ ini_t* ini_load(const char *filename);
|
||||||
void ini_free(ini_t *ini);
|
void ini_free(ini_t *ini);
|
||||||
const char* ini_get(ini_t *ini, const char *section, const char *key);
|
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);
|
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
|
#endif
|
Binary file not shown.
Before Width: | Height: | Size: 11 KiB After Width: | Height: | Size: 183 KiB |
BIN
textures/custom_font/custom_font_jp.rgba32.png
Normal file
BIN
textures/custom_font/custom_font_jp.rgba32.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 65 KiB |
BIN
textures/custom_font/custom_font_jp_aliased.rgba32.png
Normal file
BIN
textures/custom_font/custom_font_jp_aliased.rgba32.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 164 KiB |
Binary file not shown.
Before Width: | Height: | Size: 3.4 KiB After Width: | Height: | Size: 73 KiB |
Loading…
Reference in a new issue