njin
Engine 2D gọn nhẹ để tự tay làm game theo ý mình. Vibe coding cũng ổn luôn
Loading...
Searching...
No Matches
njin_i18n.h
1#pragma once
2#include "_types.h"
3#include <initializer_list>
4#include <string>
5#include <string_view>
6#include <vector>
7
8namespace njin {
9struct context;
10
13
29bool i18n_load(context &ctx, const char *lang, const char *path);
30
34void i18n_set_language(context &ctx, const char *lang);
35
38const char *i18n_language(const context &ctx);
39
44void i18n_set_fallback(context &ctx, const char *lang);
45
49std::vector<std::string> i18n_languages(const context &ctx);
50
53const char *i18n_language_name(const context &ctx, const char *lang);
54
66const char *tr(const context &ctx, const char *key);
67
78std::string trf(const context &ctx, const char *key, std::initializer_list<std::string_view> args);
79
82bool i18n_has(const context &ctx, const char *key);
84} // namespace njin
bool i18n_load(context &ctx, const char *lang, const char *path)
Nạp bảng chuỗi của một ngôn ngữ từ file JSON.
const char * tr(const context &ctx, const char *key)
Chuỗi đã dịch của key trong ngôn ngữ đang dùng.
void i18n_set_language(context &ctx, const char *lang)
Chọn ngôn ngữ đang dùng.
const char * i18n_language_name(const context &ctx, const char *lang)
Tên hiện của một ngôn ngữ: khóa _name trong file của nó, hoặc chính mã.
void i18n_set_fallback(context &ctx, const char *lang)
Ngôn ngữ dự phòng: khi ngôn ngữ đang dùng thiếu một khóa thì lấy ở đây (thường là ngôn ngữ gốc của ga...
const char * i18n_language(const context &ctx)
Mã ngôn ngữ đang dùng, hoặc chuỗi rỗng nếu chưa nạp ngôn ngữ nào.
std::vector< std::string > i18n_languages(const context &ctx)
Mã các ngôn ngữ đã nạp, theo thứ tự nạp.
std::string trf(const context &ctx, const char *key, std::initializer_list< std::string_view > args)
Như tr(), rồi thay {0}, {1}... bằng các tham số theo thứ tự: câu dịch được đổi trật tự từ theo từng n...
bool i18n_has(const context &ctx, const char *key)
Có khóa này trong ngôn ngữ đang dùng hoặc ngôn ngữ dự phòng không.