Initial commit
This commit is contained in:
@@ -0,0 +1,49 @@
|
||||
{
|
||||
"deviceList": "Device List",
|
||||
"noDevices": "It seems that you have no devices! You can register one with the big plus button.",
|
||||
"setupNewDevice": "Setup new device",
|
||||
"addExistingDevice": "Add existing device",
|
||||
|
||||
"registerDevice": "Register Device",
|
||||
"deviceName": "Name",
|
||||
"networkName": "Network Name (SSID)",
|
||||
"routerMacAddress": "Router MAC Address (BSSID)",
|
||||
"networkPassword": "Network Password",
|
||||
"networkLimitation": "Only 2.4 GHz networks allowed!",
|
||||
"networkLimitationDesc": "We suspect that your network may be 5 GHz based on the name. Please note that liteauth can only connect to 2.4 GHz networks.",
|
||||
"networkInitHeadline": "Network Initialization",
|
||||
"networkInitDetails": "Broadcasting network information to your liteauth device, This will be done in a minute or two. Please also make sure your device is powered on.",
|
||||
|
||||
"networkInfoHeadline": "Network Information",
|
||||
"networkInfoPrompt": "Do you wish to automatically fill in the current network information? The app will ask to access your fine location if you continue.",
|
||||
"continueText": "Continue",
|
||||
"cancel": "Cancel",
|
||||
|
||||
"deviceInfo": "Device Information",
|
||||
"delete": "Delete",
|
||||
"deletion": "Deletion",
|
||||
"deviceDeleteConfirm": "Are you sure you want to delete this device forever?",
|
||||
"reconfigureNetwork": "Reconfigure Network",
|
||||
"status": "Status: ",
|
||||
"online": "Online",
|
||||
"offline": "Offline",
|
||||
"refresh": "Refresh",
|
||||
"lastKnownIP": "Last Known IP: {ip}",
|
||||
"@lastKnownIP": {
|
||||
"placeholders": {
|
||||
"ip": {
|
||||
"type": "String",
|
||||
"example": "192.168.1.10"
|
||||
}
|
||||
}
|
||||
},
|
||||
"routerSsid": "Router SSID: {ssid}",
|
||||
"@routerSsid": {
|
||||
"placeholders": {
|
||||
"ssid": {
|
||||
"type": "String",
|
||||
"example": "ABC_WiFi"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,302 @@
|
||||
import 'dart:async';
|
||||
|
||||
import 'package:flutter/foundation.dart';
|
||||
import 'package:flutter/widgets.dart';
|
||||
import 'package:flutter_localizations/flutter_localizations.dart';
|
||||
import 'package:intl/intl.dart' as intl;
|
||||
|
||||
import 'app_localizations_en.dart';
|
||||
import 'app_localizations_th.dart';
|
||||
|
||||
// ignore_for_file: type=lint
|
||||
|
||||
/// Callers can lookup localized strings with an instance of AppLocalizations
|
||||
/// returned by `AppLocalizations.of(context)`.
|
||||
///
|
||||
/// Applications need to include `AppLocalizations.delegate()` in their app's
|
||||
/// `localizationDelegates` list, and the locales they support in the app's
|
||||
/// `supportedLocales` list. For example:
|
||||
///
|
||||
/// ```dart
|
||||
/// import 'l10n/app_localizations.dart';
|
||||
///
|
||||
/// return MaterialApp(
|
||||
/// localizationsDelegates: AppLocalizations.localizationsDelegates,
|
||||
/// supportedLocales: AppLocalizations.supportedLocales,
|
||||
/// home: MyApplicationHome(),
|
||||
/// );
|
||||
/// ```
|
||||
///
|
||||
/// ## Update pubspec.yaml
|
||||
///
|
||||
/// Please make sure to update your pubspec.yaml to include the following
|
||||
/// packages:
|
||||
///
|
||||
/// ```yaml
|
||||
/// dependencies:
|
||||
/// # Internationalization support.
|
||||
/// flutter_localizations:
|
||||
/// sdk: flutter
|
||||
/// intl: any # Use the pinned version from flutter_localizations
|
||||
///
|
||||
/// # Rest of dependencies
|
||||
/// ```
|
||||
///
|
||||
/// ## iOS Applications
|
||||
///
|
||||
/// iOS applications define key application metadata, including supported
|
||||
/// locales, in an Info.plist file that is built into the application bundle.
|
||||
/// To configure the locales supported by your app, you’ll need to edit this
|
||||
/// file.
|
||||
///
|
||||
/// First, open your project’s ios/Runner.xcworkspace Xcode workspace file.
|
||||
/// Then, in the Project Navigator, open the Info.plist file under the Runner
|
||||
/// project’s Runner folder.
|
||||
///
|
||||
/// Next, select the Information Property List item, select Add Item from the
|
||||
/// Editor menu, then select Localizations from the pop-up menu.
|
||||
///
|
||||
/// Select and expand the newly-created Localizations item then, for each
|
||||
/// locale your application supports, add a new item and select the locale
|
||||
/// you wish to add from the pop-up menu in the Value field. This list should
|
||||
/// be consistent with the languages listed in the AppLocalizations.supportedLocales
|
||||
/// property.
|
||||
abstract class AppLocalizations {
|
||||
AppLocalizations(String locale)
|
||||
: localeName = intl.Intl.canonicalizedLocale(locale.toString());
|
||||
|
||||
final String localeName;
|
||||
|
||||
static AppLocalizations? of(BuildContext context) {
|
||||
return Localizations.of<AppLocalizations>(context, AppLocalizations);
|
||||
}
|
||||
|
||||
static const LocalizationsDelegate<AppLocalizations> delegate =
|
||||
_AppLocalizationsDelegate();
|
||||
|
||||
/// A list of this localizations delegate along with the default localizations
|
||||
/// delegates.
|
||||
///
|
||||
/// Returns a list of localizations delegates containing this delegate along with
|
||||
/// GlobalMaterialLocalizations.delegate, GlobalCupertinoLocalizations.delegate,
|
||||
/// and GlobalWidgetsLocalizations.delegate.
|
||||
///
|
||||
/// Additional delegates can be added by appending to this list in
|
||||
/// MaterialApp. This list does not have to be used at all if a custom list
|
||||
/// of delegates is preferred or required.
|
||||
static const List<LocalizationsDelegate<dynamic>> localizationsDelegates =
|
||||
<LocalizationsDelegate<dynamic>>[
|
||||
delegate,
|
||||
GlobalMaterialLocalizations.delegate,
|
||||
GlobalCupertinoLocalizations.delegate,
|
||||
GlobalWidgetsLocalizations.delegate,
|
||||
];
|
||||
|
||||
/// A list of this localizations delegate's supported locales.
|
||||
static const List<Locale> supportedLocales = <Locale>[
|
||||
Locale('en'),
|
||||
Locale('th'),
|
||||
];
|
||||
|
||||
/// No description provided for @deviceList.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Device List'**
|
||||
String get deviceList;
|
||||
|
||||
/// No description provided for @noDevices.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'It seems that you have no devices! You can register one with the big plus button.'**
|
||||
String get noDevices;
|
||||
|
||||
/// No description provided for @setupNewDevice.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Setup new device'**
|
||||
String get setupNewDevice;
|
||||
|
||||
/// No description provided for @addExistingDevice.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Add existing device'**
|
||||
String get addExistingDevice;
|
||||
|
||||
/// No description provided for @registerDevice.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Register Device'**
|
||||
String get registerDevice;
|
||||
|
||||
/// No description provided for @deviceName.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Name'**
|
||||
String get deviceName;
|
||||
|
||||
/// No description provided for @networkName.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Network Name (SSID)'**
|
||||
String get networkName;
|
||||
|
||||
/// No description provided for @routerMacAddress.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Router MAC Address (BSSID)'**
|
||||
String get routerMacAddress;
|
||||
|
||||
/// No description provided for @networkPassword.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Network Password'**
|
||||
String get networkPassword;
|
||||
|
||||
/// No description provided for @networkLimitation.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Only 2.4 GHz networks allowed!'**
|
||||
String get networkLimitation;
|
||||
|
||||
/// No description provided for @networkLimitationDesc.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'We suspect that your network may be 5 GHz based on the name. Please note that liteauth can only connect to 2.4 GHz networks.'**
|
||||
String get networkLimitationDesc;
|
||||
|
||||
/// No description provided for @networkInitHeadline.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Network Initialization'**
|
||||
String get networkInitHeadline;
|
||||
|
||||
/// No description provided for @networkInitDetails.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Broadcasting network information to your liteauth device, This will be done in a minute or two. Please also make sure your device is powered on.'**
|
||||
String get networkInitDetails;
|
||||
|
||||
/// No description provided for @networkInfoHeadline.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Network Information'**
|
||||
String get networkInfoHeadline;
|
||||
|
||||
/// No description provided for @networkInfoPrompt.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Do you wish to automatically fill in the current network information? The app will ask to access your fine location if you continue.'**
|
||||
String get networkInfoPrompt;
|
||||
|
||||
/// No description provided for @continueText.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Continue'**
|
||||
String get continueText;
|
||||
|
||||
/// No description provided for @cancel.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Cancel'**
|
||||
String get cancel;
|
||||
|
||||
/// No description provided for @deviceInfo.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Device Information'**
|
||||
String get deviceInfo;
|
||||
|
||||
/// No description provided for @delete.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Delete'**
|
||||
String get delete;
|
||||
|
||||
/// No description provided for @deletion.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Deletion'**
|
||||
String get deletion;
|
||||
|
||||
/// No description provided for @deviceDeleteConfirm.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Are you sure you want to delete this device forever?'**
|
||||
String get deviceDeleteConfirm;
|
||||
|
||||
/// No description provided for @reconfigureNetwork.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Reconfigure Network'**
|
||||
String get reconfigureNetwork;
|
||||
|
||||
/// No description provided for @status.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Status: '**
|
||||
String get status;
|
||||
|
||||
/// No description provided for @online.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Online'**
|
||||
String get online;
|
||||
|
||||
/// No description provided for @offline.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Offline'**
|
||||
String get offline;
|
||||
|
||||
/// No description provided for @refresh.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Refresh'**
|
||||
String get refresh;
|
||||
|
||||
/// No description provided for @lastKnownIP.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Last Known IP: {ip}'**
|
||||
String lastKnownIP(String ip);
|
||||
|
||||
/// No description provided for @routerSsid.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Router SSID: {ssid}'**
|
||||
String routerSsid(String ssid);
|
||||
}
|
||||
|
||||
class _AppLocalizationsDelegate
|
||||
extends LocalizationsDelegate<AppLocalizations> {
|
||||
const _AppLocalizationsDelegate();
|
||||
|
||||
@override
|
||||
Future<AppLocalizations> load(Locale locale) {
|
||||
return SynchronousFuture<AppLocalizations>(lookupAppLocalizations(locale));
|
||||
}
|
||||
|
||||
@override
|
||||
bool isSupported(Locale locale) =>
|
||||
<String>['en', 'th'].contains(locale.languageCode);
|
||||
|
||||
@override
|
||||
bool shouldReload(_AppLocalizationsDelegate old) => false;
|
||||
}
|
||||
|
||||
AppLocalizations lookupAppLocalizations(Locale locale) {
|
||||
// Lookup logic when only language code is specified.
|
||||
switch (locale.languageCode) {
|
||||
case 'en':
|
||||
return AppLocalizationsEn();
|
||||
case 'th':
|
||||
return AppLocalizationsTh();
|
||||
}
|
||||
|
||||
throw FlutterError(
|
||||
'AppLocalizations.delegate failed to load unsupported locale "$locale". This is likely '
|
||||
'an issue with the localizations generation tool. Please file an issue '
|
||||
'on GitHub with a reproducible sample app and the gen-l10n configuration '
|
||||
'that was used.',
|
||||
);
|
||||
}
|
||||
@@ -0,0 +1,103 @@
|
||||
// ignore: unused_import
|
||||
import 'package:intl/intl.dart' as intl;
|
||||
import 'app_localizations.dart';
|
||||
|
||||
// ignore_for_file: type=lint
|
||||
|
||||
/// The translations for English (`en`).
|
||||
class AppLocalizationsEn extends AppLocalizations {
|
||||
AppLocalizationsEn([String locale = 'en']) : super(locale);
|
||||
|
||||
@override
|
||||
String get deviceList => 'Device List';
|
||||
|
||||
@override
|
||||
String get noDevices =>
|
||||
'It seems that you have no devices! You can register one with the big plus button.';
|
||||
|
||||
@override
|
||||
String get setupNewDevice => 'Setup new device';
|
||||
|
||||
@override
|
||||
String get addExistingDevice => 'Add existing device';
|
||||
|
||||
@override
|
||||
String get registerDevice => 'Register Device';
|
||||
|
||||
@override
|
||||
String get deviceName => 'Name';
|
||||
|
||||
@override
|
||||
String get networkName => 'Network Name (SSID)';
|
||||
|
||||
@override
|
||||
String get routerMacAddress => 'Router MAC Address (BSSID)';
|
||||
|
||||
@override
|
||||
String get networkPassword => 'Network Password';
|
||||
|
||||
@override
|
||||
String get networkLimitation => 'Only 2.4 GHz networks allowed!';
|
||||
|
||||
@override
|
||||
String get networkLimitationDesc =>
|
||||
'We suspect that your network may be 5 GHz based on the name. Please note that liteauth can only connect to 2.4 GHz networks.';
|
||||
|
||||
@override
|
||||
String get networkInitHeadline => 'Network Initialization';
|
||||
|
||||
@override
|
||||
String get networkInitDetails =>
|
||||
'Broadcasting network information to your liteauth device, This will be done in a minute or two. Please also make sure your device is powered on.';
|
||||
|
||||
@override
|
||||
String get networkInfoHeadline => 'Network Information';
|
||||
|
||||
@override
|
||||
String get networkInfoPrompt =>
|
||||
'Do you wish to automatically fill in the current network information? The app will ask to access your fine location if you continue.';
|
||||
|
||||
@override
|
||||
String get continueText => 'Continue';
|
||||
|
||||
@override
|
||||
String get cancel => 'Cancel';
|
||||
|
||||
@override
|
||||
String get deviceInfo => 'Device Information';
|
||||
|
||||
@override
|
||||
String get delete => 'Delete';
|
||||
|
||||
@override
|
||||
String get deletion => 'Deletion';
|
||||
|
||||
@override
|
||||
String get deviceDeleteConfirm =>
|
||||
'Are you sure you want to delete this device forever?';
|
||||
|
||||
@override
|
||||
String get reconfigureNetwork => 'Reconfigure Network';
|
||||
|
||||
@override
|
||||
String get status => 'Status: ';
|
||||
|
||||
@override
|
||||
String get online => 'Online';
|
||||
|
||||
@override
|
||||
String get offline => 'Offline';
|
||||
|
||||
@override
|
||||
String get refresh => 'Refresh';
|
||||
|
||||
@override
|
||||
String lastKnownIP(String ip) {
|
||||
return 'Last Known IP: $ip';
|
||||
}
|
||||
|
||||
@override
|
||||
String routerSsid(String ssid) {
|
||||
return 'Router SSID: $ssid';
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,102 @@
|
||||
// ignore: unused_import
|
||||
import 'package:intl/intl.dart' as intl;
|
||||
import 'app_localizations.dart';
|
||||
|
||||
// ignore_for_file: type=lint
|
||||
|
||||
/// The translations for Thai (`th`).
|
||||
class AppLocalizationsTh extends AppLocalizations {
|
||||
AppLocalizationsTh([String locale = 'th']) : super(locale);
|
||||
|
||||
@override
|
||||
String get deviceList => 'รายการอุปกรณ์';
|
||||
|
||||
@override
|
||||
String get noDevices =>
|
||||
'ดูเหมือนว่าคุณจะไม่มีอุปกรณ์ที่ลงทะเบียนไว้นะ! คุณสามารถลงทะเบียนอุปกรณ์ใหม่ได้ที่ปุ่มบวกด้านล่าง';
|
||||
|
||||
@override
|
||||
String get setupNewDevice => 'ตั้งค่าอุปกรณ์ใหม่';
|
||||
|
||||
@override
|
||||
String get addExistingDevice => 'เพิ่มอุปกรณ์ที่ตั้งค่าแล้ว';
|
||||
|
||||
@override
|
||||
String get registerDevice => 'ลงทะเบียนอุปกรณ์';
|
||||
|
||||
@override
|
||||
String get deviceName => 'ชื่อ';
|
||||
|
||||
@override
|
||||
String get networkName => 'ชื่อเครือข่าย (SSID)';
|
||||
|
||||
@override
|
||||
String get routerMacAddress => 'MAC Address ของเราเตอร์ (BSSID)';
|
||||
|
||||
@override
|
||||
String get networkPassword => 'รหัสผ่านเครือข่าย';
|
||||
|
||||
@override
|
||||
String get networkLimitation => 'อนุญาตแค่เครือข่าย 2.4 GHz เท่านั้น!';
|
||||
|
||||
@override
|
||||
String get networkLimitationDesc =>
|
||||
'เราสงสัยว่าเครือข่ายคุณอาจเป็นเครือข่าย 5 GHz จากชื่อ โปรดจำไว้ว่า liteauth สามารถเชื่อมต่อได้กับเครือข่าย 2.4 GHz เท่านั้น';
|
||||
|
||||
@override
|
||||
String get networkInitHeadline => 'การตั้งค่าเครือข่าย';
|
||||
|
||||
@override
|
||||
String get networkInitDetails =>
|
||||
'กำลังเผยแพร่ข้อมูลเครือข่ายไปยังอุปกรณ์ liteauth ของคุณ กระบวนการนี้อาจใช้เวลาหนึ่งถึงสองนาที และโปรดตรวจสอบให้แน่ใจว่าคุณเปิดอุปกรณ์ของคุณแล้ว';
|
||||
|
||||
@override
|
||||
String get networkInfoHeadline => 'ข้อมูลเครือข่าย';
|
||||
|
||||
@override
|
||||
String get networkInfoPrompt =>
|
||||
'คุณต้องการที่จะใส่ข้อมูลเครือข่ายปัจจุบันโดยอัตโนมัติหรือไม่ แอพลิเคชั่นจะขอความอนุญาตในการเข้าถึงข้อมูลตำแหน่งแบบละเอียดหากคุณดำเนินการต่อ';
|
||||
|
||||
@override
|
||||
String get continueText => 'ดำเนินการต่อ';
|
||||
|
||||
@override
|
||||
String get cancel => 'ยกเลิก';
|
||||
|
||||
@override
|
||||
String get deviceInfo => 'ข้อมูลอุปกรณ์';
|
||||
|
||||
@override
|
||||
String get delete => 'ลบ';
|
||||
|
||||
@override
|
||||
String get deletion => 'การลบ';
|
||||
|
||||
@override
|
||||
String get deviceDeleteConfirm => 'คุณแน่ใจหรือไม่ที่จะลบอุปกรณ์นี้อย่างถาวร';
|
||||
|
||||
@override
|
||||
String get reconfigureNetwork => 'ตั้งค่าเครือข่ายใหม่';
|
||||
|
||||
@override
|
||||
String get status => 'สถานะ: ';
|
||||
|
||||
@override
|
||||
String get online => 'ออนไลน์';
|
||||
|
||||
@override
|
||||
String get offline => 'ออฟไลน์';
|
||||
|
||||
@override
|
||||
String get refresh => 'รีเฟรช';
|
||||
|
||||
@override
|
||||
String lastKnownIP(String ip) {
|
||||
return 'ที่อยู่ IP ที่ทราบล่าสุด: $ip';
|
||||
}
|
||||
|
||||
@override
|
||||
String routerSsid(String ssid) {
|
||||
return 'SSID เราเตอร์: $ssid';
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,33 @@
|
||||
{
|
||||
"deviceList": "รายการอุปกรณ์",
|
||||
"noDevices": "ดูเหมือนว่าคุณจะไม่มีอุปกรณ์ที่ลงทะเบียนไว้นะ! คุณสามารถลงทะเบียนอุปกรณ์ใหม่ได้ที่ปุ่มบวกด้านล่าง",
|
||||
"setupNewDevice": "ตั้งค่าอุปกรณ์ใหม่",
|
||||
"addExistingDevice": "เพิ่มอุปกรณ์ที่ตั้งค่าแล้ว",
|
||||
|
||||
"registerDevice": "ลงทะเบียนอุปกรณ์",
|
||||
"deviceName": "ชื่อ",
|
||||
"networkName": "ชื่อเครือข่าย (SSID)",
|
||||
"routerMacAddress": "MAC Address ของเราเตอร์ (BSSID)",
|
||||
"networkPassword": "รหัสผ่านเครือข่าย",
|
||||
"networkLimitation": "อนุญาตแค่เครือข่าย 2.4 GHz เท่านั้น!",
|
||||
"networkLimitationDesc": "เราสงสัยว่าเครือข่ายคุณอาจเป็นเครือข่าย 5 GHz จากชื่อ โปรดจำไว้ว่า liteauth สามารถเชื่อมต่อได้กับเครือข่าย 2.4 GHz เท่านั้น",
|
||||
"networkInitHeadline": "การตั้งค่าเครือข่าย",
|
||||
"networkInitDetails": "กำลังเผยแพร่ข้อมูลเครือข่ายไปยังอุปกรณ์ liteauth ของคุณ กระบวนการนี้อาจใช้เวลาหนึ่งถึงสองนาที และโปรดตรวจสอบให้แน่ใจว่าคุณเปิดอุปกรณ์ของคุณแล้ว",
|
||||
|
||||
"networkInfoHeadline": "ข้อมูลเครือข่าย",
|
||||
"networkInfoPrompt": "คุณต้องการที่จะใส่ข้อมูลเครือข่ายปัจจุบันโดยอัตโนมัติหรือไม่ แอพลิเคชั่นจะขอความอนุญาตในการเข้าถึงข้อมูลตำแหน่งแบบละเอียดหากคุณดำเนินการต่อ",
|
||||
"continueText": "ดำเนินการต่อ",
|
||||
"cancel": "ยกเลิก",
|
||||
|
||||
"deviceInfo": "ข้อมูลอุปกรณ์",
|
||||
"delete": "ลบ",
|
||||
"deletion": "การลบ",
|
||||
"deviceDeleteConfirm": "คุณแน่ใจหรือไม่ที่จะลบอุปกรณ์นี้อย่างถาวร",
|
||||
"reconfigureNetwork": "ตั้งค่าเครือข่ายใหม่",
|
||||
"status": "สถานะ: ",
|
||||
"online": "ออนไลน์",
|
||||
"offline": "ออฟไลน์",
|
||||
"refresh": "รีเฟรช",
|
||||
"lastKnownIP": "ที่อยู่ IP ที่ทราบล่าสุด: {ip}",
|
||||
"routerSsid": "SSID เราเตอร์: {ssid}"
|
||||
}
|
||||
Reference in New Issue
Block a user