Skip to content

Commit

Permalink
feat: 添加本地化
Browse files Browse the repository at this point in the history
  • Loading branch information
SlimeNull committed Mar 21, 2024
1 parent 4ad09a3 commit 81a0baa
Show file tree
Hide file tree
Showing 17 changed files with 916 additions and 17 deletions.
9 changes: 9 additions & 0 deletions OpenGptChat.Avalonia/App.axaml
Original file line number Diff line number Diff line change
@@ -1,11 +1,20 @@
<Application xmlns="https://github.com/avaloniaui"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:strings="using:OpenGptChat.Strings"
xmlns:fluent-styling="using:FluentAvalonia.Styling"
x:Class="OpenGptChat.App"
xmlns:local="using:OpenGptChat"
RequestedThemeVariant="Default">
<!-- "Default" ThemeVariant follows system theme variant. "Dark" or "Light" are other available options. -->

<!--<Application.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceInclude Source="/Strings/Base.axaml"/>
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</Application.Resources>-->

<Application.DataTemplates>
<local:ViewLocator/>
</Application.DataTemplates>
Expand Down
8 changes: 8 additions & 0 deletions OpenGptChat.Avalonia/App.axaml.cs
Original file line number Diff line number Diff line change
@@ -1,8 +1,10 @@
using Avalonia;
using Avalonia.Controls;
using Avalonia.Controls.ApplicationLifetimes;
using Avalonia.Data.Core;
using Avalonia.Data.Core.Plugins;
using Avalonia.Markup.Xaml;
using OpenGptChat.Strings;
using OpenGptChat.ViewModels;
using OpenGptChat.Views;

Expand All @@ -13,6 +15,12 @@ public partial class App : Application
public override void Initialize()
{
AvaloniaXamlLoader.Load(this);

if (Resources is null)
Resources = new ResourceDictionary();

Resources.MergedDictionaries.Add(
StringResources.Instance);
}

public override void OnFrameworkInitializationCompleted()
Expand Down
8 changes: 0 additions & 8 deletions OpenGptChat.Avalonia/Program.cs
Original file line number Diff line number Diff line change
Expand Up @@ -10,14 +10,6 @@ internal sealed class Program
// yet and stuff might break.
[STAThread]
public static void Main(string[] args) => BuildAvaloniaApp()
.UsePlatformDetect()
//.With(new Win32PlatformOptions()
//{
// CompositionMode = new[]
// {
// Win32CompositionMode.WinUIComposition,
// }
//})
.StartWithClassicDesktopLifetime(args);

// Avalonia configuration, don't remove; also used by visual designer.
Expand Down
80 changes: 80 additions & 0 deletions OpenGptChat.Avalonia/Strings/Arabic.axaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,80 @@
<!--Translated by ChatGPT, 阿拉伯语-->

<ResourceDictionary xmlns="https://github.com/avaloniaui"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:s="clr-namespace:System;assembly=mscorlib">

<ResourceDictionary.MergedDictionaries>
<ResourceInclude Source="/Strings/Base.axaml"/>
</ResourceDictionary.MergedDictionaries>

<!--اسم الصفحة-->
<s:String x:Key="StrChat">الدردشة</s:String>
<s:String x:Key="StrConfiguration">الإعدادات</s:String>

<!--أسماء الإعدادات-->
<s:String x:Key="StrAPIKey">مفتاح واجهة برمجة التطبيقات</s:String>
<s:String x:Key="StrAPIHost">مضيف واجهة برمجة التطبيقات</s:String>
<s:String x:Key="StrOrganization">منظمة</s:String>
<s:String x:Key="StrAPIGPTModel">نموذج GPT لواجهة برمجة التطبيقات</s:String>
<s:String x:Key="StrModel">نموذج</s:String>
<s:String x:Key="StrAPITimeout">وقت انتهاء صلاحية واجهة برمجة التطبيقات</s:String>
<s:String x:Key="StrTemperature">درجة الحرارة</s:String>
<s:String x:Key="StrEnableChatContext">تمكين سياق الدردشة</s:String>
<s:String x:Key="StrSystemMessages">رسائل النظام</s:String>
<s:String x:Key="StrApply">تطبيق</s:String>
<s:String x:Key="StrWindowAlwaysOnTop">نافذة دائمًا في المقدمة</s:String>
<s:String x:Key="StrDisableChatAnimation">تعطيل الرسوم المتحركة للدردشة</s:String>

<s:String x:Key="StrLanguage">اللغة</s:String>
<s:String x:Key="StrColorMode">وضع اللون</s:String>

<!--وصف مفاتيح الاختصار-->
<s:String x:Key="StrHotkeyTips">تلميحات مفتاح الاختصار</s:String>
<s:String x:Key="StrCloseApplication">إغلاق التطبيق</s:String>
<s:String x:Key="StrHideApplication">إخفاء التطبيق</s:String>
<s:String x:Key="StrShowApplication">عرض التطبيق</s:String>
<s:String x:Key="StrSendMessage">إرسال رسالة</s:String>
<s:String x:Key="StrCancelSendingMessage">إلغاء إرسال الرسالة</s:String>

<s:String x:Key="StrSwitchToNextSession">التبديل إلى الجلسة التالية</s:String>
<s:String x:Key="StrSwitchToPreviousSession">التبديل إلى الجلسة السابقة</s:String>
<s:String x:Key="StrCycleSwitchToNextSession">دورة التبديل إلى الجلسة التالية</s:String>
<s:String x:Key="StrCycleSwitchToPreviousSession">دورة التبديل إلى الجلسة السابقة</s:String>
<s:String x:Key="StrCreateNewSession">إنشاء جلسة جديدة</s:String>
<s:String x:Key="StrRemoveCurrentSession">إزالة الجلسة الحالية</s:String>

<s:String x:Key="StrGlobalHotkey">مفتاح الاختصار العالمي</s:String>
<s:String x:Key="StrInputBox">مربع الإدخال</s:String>


<!--أزرار-->
<s:String x:Key="StrAccept">قبول</s:String>
<s:String x:Key="StrCancel">إلغاء</s:String>

<s:String x:Key="StrSend">إرسال</s:String>
<s:String x:Key="StrSave">حفظ</s:String>
<s:String x:Key="StrNewSession">جلسة جديدة</s:String>

<!--تلميحات الأدوات-->
<s:String x:Key="StrAboutOpenGptChat">حول OpenGptChat</s:String>
<s:String x:Key="StrGoBackToMainPage">العودة إلى الصفحة الرئيسية</s:String>
<s:String x:Key="StrResetChat">إعادة تعيين الدردشة</s:String>
<s:String x:Key="StrGoToConfigurationPage">الانتقال إلى صفحة الإعدادات</s:String>

<!--قائمة-->
<s:String x:Key="StrCopy">نسخ</s:String>
<s:String x:Key="StrConfig">تهيئة</s:String>
<s:String x:Key="StrEdit">تحرير</s:String>
<s:String x:Key="StrDelete">حذف</s:String>
<s:String x:Key="StrThis">هذا</s:String>
<s:String x:Key="StrAllAbove">كل ما فوق</s:String>
<s:String x:Key="StrAllBelow">كل ما دون</s:String>

<!--النص-->
<s:String x:Key="StrAuto">تلقائي</s:String>
<s:String x:Key="StrYes">نعم</s:String>
<s:String x:Key="StrNo">لا</s:String>
<s:String x:Key="StrOk">موافق</s:String>

</ResourceDictionary>
80 changes: 80 additions & 0 deletions OpenGptChat.Avalonia/Strings/Base.axaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,80 @@
<ResourceDictionary xmlns="https://github.com/avaloniaui"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:s="using:System">

<!--Page names-->
<s:String x:Key="StrChat">Chat</s:String>
<s:String x:Key="StrConfiguration">Configuration</s:String>

<!--Configuration names-->
<s:String x:Key="StrAPIKey">API Key</s:String>
<s:String x:Key="StrAPIHost">API Host</s:String>
<s:String x:Key="StrOrganization">Organization</s:String>
<s:String x:Key="StrAPIGPTModel">API GPT Model</s:String>
<s:String x:Key="StrModel">Model</s:String>
<s:String x:Key="StrAPITimeout">API Timeout</s:String>
<s:String x:Key="StrTemperature">Temperature</s:String>
<s:String x:Key="StrEnableChatContext">Enable chat context</s:String>
<s:String x:Key="StrSystemMessages">System messages</s:String>
<s:String x:Key="StrApply">Apply</s:String>
<s:String x:Key="StrEnableTitleGeneration">Enable title generation</s:String>
<s:String x:Key="StrWindowAlwaysOnTop">Window always on top</s:String>
<s:String x:Key="StrDisableChatAnimation">Disable chat animation</s:String>

<s:String x:Key="StrLanguage">Language</s:String>
<s:String x:Key="StrColorMode">Color mode</s:String>

<!--hotkey descriptions-->
<s:String x:Key="StrHotkeyTips">Hotkety Tips</s:String>
<s:String x:Key="StrCloseApplication">Close application</s:String>
<s:String x:Key="StrHideApplication">Hide application</s:String>
<s:String x:Key="StrShowApplication">Show application</s:String>
<s:String x:Key="StrSendMessage">Send message</s:String>
<s:String x:Key="StrCancelSendingMessage">Cancel sending message</s:String>

<s:String x:Key="StrSwitchToNextSession">Switch to next session</s:String>
<s:String x:Key="StrSwitchToPreviousSession">Switch to previous session</s:String>
<s:String x:Key="StrCycleSwitchToNextSession">Cycle switch to next session</s:String>
<s:String x:Key="StrCycleSwitchToPreviousSession">Cycle switch to previous session</s:String>
<s:String x:Key="StrCreateNewSession">Create a new session</s:String>
<s:String x:Key="StrRemoveCurrentSession">Remove the current session</s:String>

<s:String x:Key="StrGlobalHotkey">Global hotkey</s:String>
<s:String x:Key="StrInputBox">Input box</s:String>


<!--Button-->
<s:String x:Key="StrAccept">Accept</s:String>
<s:String x:Key="StrCancel">Cancel</s:String>

<s:String x:Key="StrSend">Send</s:String>
<s:String x:Key="StrSave">Save</s:String>
<s:String x:Key="StrNewSession">New Session</s:String>


<!--ToolTip-->
<s:String x:Key="StrAboutOpenGptChat">About OpenGptChat</s:String>
<s:String x:Key="StrGoBackToMainPage">Go back to Main page</s:String>
<s:String x:Key="StrResetChat">Reset chat</s:String>
<s:String x:Key="StrGoToConfigurationPage">Go to Configuration page</s:String>

<!--Menu-->
<s:String x:Key="StrCopy">Copy</s:String>
<s:String x:Key="StrConfig">Config</s:String>
<s:String x:Key="StrEdit">Edit</s:String>
<s:String x:Key="StrDelete">Delete</s:String>
<s:String x:Key="StrThis">This</s:String>
<s:String x:Key="StrAllAbove">All above</s:String>
<s:String x:Key="StrAllBelow">All below</s:String>

<!--Text-->
<s:String x:Key="StrAuto">Auto</s:String>
<s:String x:Key="StrYes">Yes</s:String>
<s:String x:Key="StrNo">No</s:String>
<s:String x:Key="StrOk">Ok</s:String>




<s:Boolean x:Key="IsLanguageResource">True</s:Boolean>
</ResourceDictionary>
79 changes: 79 additions & 0 deletions OpenGptChat.Avalonia/Strings/ChineseSimplified.axaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,79 @@
<ResourceDictionary xmlns="https://github.com/avaloniaui"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:s="clr-namespace:System;assembly=mscorlib">
<ResourceDictionary.MergedDictionaries>
<ResourceInclude Source="/Strings/Base.axaml"/>
</ResourceDictionary.MergedDictionaries>

<!--页面名称-->
<s:String x:Key="StrChat">聊天</s:String>
<s:String x:Key="StrConfiguration">配置</s:String>

<!--配置名称-->
<s:String x:Key="StrAPIKey">API 密钥</s:String>
<s:String x:Key="StrAPIHost">API 主机</s:String>
<s:String x:Key="StrOrganization">组织</s:String>
<s:String x:Key="StrAPIGPTModel">API GPT 模型</s:String>
<s:String x:Key="StrModel">模型</s:String>
<s:String x:Key="StrAPITimeout">API 超时时间</s:String>
<s:String x:Key="StrTemperature">温度</s:String>
<s:String x:Key="StrEnableChatContext">启用聊天上下文</s:String>
<s:String x:Key="StrSystemMessages">系统消息</s:String>
<s:String x:Key="StrApply">应用</s:String>
<s:String x:Key="StrWindowAlwaysOnTop">窗口置顶</s:String>
<s:String x:Key="StrDisableChatAnimation">禁用聊天动画</s:String>

<s:String x:Key="StrLanguage">语言</s:String>
<s:String x:Key="StrColorMode">色彩模式</s:String>

<!--热键描述-->
<s:String x:Key="StrHotkeyTips">热键提示</s:String>
<s:String x:Key="StrCloseApplication">关闭程序</s:String>
<s:String x:Key="StrHideApplication">隐藏程序</s:String>
<s:String x:Key="StrShowApplication">显示程序</s:String>
<s:String x:Key="StrSendMessage">发送消息</s:String>
<s:String x:Key="StrCancelSendingMessage">取消发送消息</s:String>

<s:String x:Key="StrSwitchToNextSession">切换到下一个会话</s:String>
<s:String x:Key="StrSwitchToPreviousSession">切换到上一个会话</s:String>
<s:String x:Key="StrCycleSwitchToNextSession">循环切换到下一个会话</s:String>
<s:String x:Key="StrCycleSwitchToPreviousSession">循环切换到上一个会话</s:String>
<s:String x:Key="StrCreateNewSession">创建一个新会话</s:String>
<s:String x:Key="StrRemoveCurrentSession">删除当前会话</s:String>


<s:String x:Key="StrGlobalHotkey">全局热键</s:String>
<s:String x:Key="StrInputBox">输入框</s:String>


<!--按钮-->
<s:String x:Key="StrAccept">接受</s:String>
<s:String x:Key="StrCancel">取消</s:String>

<s:String x:Key="StrSend">发送</s:String>
<s:String x:Key="StrSave">保存</s:String>
<s:String x:Key="StrNewSession">新建会话</s:String>

<!--工具提示-->
<s:String x:Key="StrAboutOpenGptChat">关于 OpenGptChat</s:String>
<s:String x:Key="StrGoBackToMainPage">返回到主页面</s:String>
<s:String x:Key="StrResetChat">重置聊天</s:String>
<s:String x:Key="StrGoToConfigurationPage">转到配置页面</s:String>

<!--菜单-->
<s:String x:Key="StrCopy">复制</s:String>
<s:String x:Key="StrConfig">配置</s:String>
<s:String x:Key="StrEdit">编辑</s:String>
<s:String x:Key="StrDelete">删除</s:String>
<s:String x:Key="StrThis">这个</s:String>
<s:String x:Key="StrAllAbove">以上所有</s:String>
<s:String x:Key="StrAllBelow">以下所有</s:String>

<!--文本-->
<s:String x:Key="StrAuto">自动</s:String>
<s:String x:Key="StrYes">是</s:String>
<s:String x:Key="StrNo">否</s:String>
<s:String x:Key="StrOk">确定</s:String>


</ResourceDictionary>
79 changes: 79 additions & 0 deletions OpenGptChat.Avalonia/Strings/ChineseTraditional.axaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,79 @@
<!--Translated by ChatGPT-->

<ResourceDictionary xmlns="https://github.com/avaloniaui"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:s="clr-namespace:System;assembly=mscorlib">
<ResourceDictionary.MergedDictionaries>
<ResourceInclude Source="/Strings/Base.axaml"/>
</ResourceDictionary.MergedDictionaries>

<!--頁面名稱-->
<s:String x:Key="StrChat">聊天</s:String>
<s:String x:Key="StrConfiguration">設定</s:String>

<!--設定名稱-->
<s:String x:Key="StrAPIKey">API 金鑰</s:String>
<s:String x:Key="StrAPIHost">API 主機</s:String>
<s:String x:Key="StrOrganization">組織</s:String>
<s:String x:Key="StrAPIGPTModel">API GPT 模型</s:String>
<s:String x:Key="StrModel">模型</s:String>
<s:String x:Key="StrAPITimeout">API 超時時間</s:String>
<s:String x:Key="StrTemperature">溫度</s:String>
<s:String x:Key="StrEnableChatContext">啟用聊天上下文</s:String>
<s:String x:Key="StrSystemMessages">系統訊息</s:String>
<s:String x:Key="StrApply">應用</s:String>
<s:String x:Key="StrWindowAlwaysOnTop">視窗置頂</s:String>
<s:String x:Key="StrDisableChatAnimation">禁用聊天動畫</s:String>

<s:String x:Key="StrLanguage">語言</s:String>
<s:String x:Key="StrColorMode">色彩模式</s:String>

<!--熱鍵描述-->
<s:String x:Key="StrHotkeyTips">熱鍵提示</s:String>
<s:String x:Key="StrCloseApplication">關閉程式</s:String>
<s:String x:Key="StrHideApplication">隱藏程式</s:String>
<s:String x:Key="StrShowApplication">顯示程式</s:String>
<s:String x:Key="StrSendMessage">發送訊息</s:String>
<s:String x:Key="StrCancelSendingMessage">取消發送訊息</s:String>

<s:String x:Key="StrSwitchToNextSession">切換到下一個會話</s:String>
<s:String x:Key="StrSwitchToPreviousSession">切換到上一個會話</s:String>
<s:String x:Key="StrCycleSwitchToNextSession">循環切換到下一個會話</s:String>
<s:String x:Key="StrCycleSwitchToPreviousSession">循環切換到上一個會話</s:String>
<s:String x:Key="StrCreateNewSession">創建一個新會話</s:String>
<s:String x:Key="StrRemoveCurrentSession">刪除當前會話</s:String>

<s:String x:Key="StrGlobalHotkey">全域熱鍵</s:String>
<s:String x:Key="StrInputBox">輸入框</s:String>


<!--按鈕-->
<s:String x:Key="StrAccept">接受</s:String>
<s:String x:Key="StrCancel">取消</s:String>

<s:String x:Key="StrSend">發送</s:String>
<s:String x:Key="StrSave">儲存</s:String>
<s:String x:Key="StrNewSession">新建對話</s:String>

<!--工具提示-->
<s:String x:Key="StrAboutOpenGptChat">關於 OpenGptChat</s:String>
<s:String x:Key="StrGoBackToMainPage">返回主頁面</s:String>
<s:String x:Key="StrResetChat">重置聊天</s:String>
<s:String x:Key="StrGoToConfigurationPage">前往設定頁面</s:String>

<!--菜單-->
<s:String x:Key="StrCopy">複製</s:String>
<s:String x:Key="StrConfig">配置</s:String>
<s:String x:Key="StrEdit">編輯</s:String>
<s:String x:Key="StrDelete">刪除</s:String>
<s:String x:Key="StrThis">這個</s:String>
<s:String x:Key="StrAllAbove">以上所有</s:String>
<s:String x:Key="StrAllBelow">以下所有</s:String>

<!--文本-->
<s:String x:Key="StrAuto">自動</s:String>
<s:String x:Key="StrYes">是</s:String>
<s:String x:Key="StrNo">否</s:String>
<s:String x:Key="StrOk">確定</s:String>

</ResourceDictionary>
10 changes: 10 additions & 0 deletions OpenGptChat.Avalonia/Strings/English.axaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
<ResourceDictionary xmlns="https://github.com/avaloniaui"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:s="clr-namespace:System;assembly=mscorlib">
<ResourceDictionary.MergedDictionaries>
<ResourceInclude Source="/Strings/Base.axaml"/>
</ResourceDictionary.MergedDictionaries>

<!--英语是默认语言, 直接 fallback 过去-->

</ResourceDictionary>
Loading

0 comments on commit 81a0baa

Please sign in to comment.