SpartanJ / ecode

Lightweight multi-platform code editor designed for modern hardware with a focus on responsiveness and performance.
MIT License
907 stars 13 forks source link

Multi human language support #122

Open THZrry opened 6 months ago

THZrry commented 6 months ago

Hello.Ecode has many benefits in many aspects,but I cant find a language switch entrance.Is there one?If not,could you please add one? I think Ecode is perfect for many tasks,but it's not so easy for non-English native speakers to try it.

SpartanJ commented 6 months ago

More languages support is pending basically because I need collaborators to implement the translation files, I guess I could do some rough translations with AI too but I'm not convinced. All the basics to support multiple languages are there but no-one actually requested before you so you're the first one. Can you tell me which language would you need?

THZrry commented 6 months ago

I am Chinese.I can provide Chinese(Simplified and Tranditional) translations.At the same time I'm a student,so I do not have plenty of time.Though,I think I can at least check translation files.Maybe you can place a translation folder and leave a template translation file in it.

NullPlane commented 6 months ago

More languages support is pending basically because I need collaborators to implement the translation files, I guess I could do some rough translations with AI too but I'm not convinced. All the basics to support multiple languages are there but no-one actually requested before you so you're the first one. Can you tell me which language would you need?

I'd at least like to take a look at this. Idk if I had time but i'd like to try at least. I speak german. Where are the translation files to be found (if already implemented) and if or not, what format? Something like YAML would probably be useful...

SpartanJ commented 6 months ago

Awesome. There are no files currently present, but I'll generate the translation file (it's an XML) soon and attach it here.

NullPlane commented 6 months ago

Awesome. There are no files currently present, but I'll generate the translation file (it's an XML) soon and attach it here.

It'd be best to somehow have a graphic or list or comments giving slight umbrage to where to find these strings. Some scheme so that translators will know what it looks in the actual interface and thus can pick opportune wording.

SpartanJ commented 6 months ago

I uploaded the english XML file to the repository. Multi language support is already available, we just need the translation files. I'll probably do a release this weekend, so it will be for the release after that one.

NullPlane commented 6 months ago

Any way to check all the locations of these strings to be correct quick? I'd need some guidance here. And can we test it (later on?)? And btw. does "col_abbr" mean column, collapse or color up there? Does Symlink target mean "to create symlink of target ..." or "the target is a symlink"?

I uploaded the english XML file to the repository. Multi language support is already available, we just need the translation files. I'll probably do a release this weekend, so it will be for the release after that one.

SpartanJ commented 6 months ago

Any way to check all the locations of these strings to be correct quick?

Sadly no, without knowing the code-base this could be challenging, you can infer it from its contents but not much more. If you want to search it in the code-base you just need to search for i18n( "your_key_name". But some won't exists with its complete name, the ones that start with a prefix usually, those ones you can search the prefix.

And can we test it (later on?)?

Yes but not with the current released version. That's why it's a good idea to have a release soon so people can start working on this. I'll release a new version very soon though. So I'll let you know. Meanwhile you can use the pre-release build. To test a language you can force it with a new command line argument: --language=. The translations will be located at: assets/i18n/. So for example the default English language will be at assets/i18n/en.xml. Any new language should go inside that folder, for example Chinese would be assets/i18n/zh.xml. So the command argument to load the Chinese language should be --language=zh. I'll add a menu for that though that it will be at Settings -> Window -> Language, and will pick all the languages from that folder. ecode-windows-0.5.1-x86_64.zip

And btw. does "col_abbr" mean column, collapse or color up there?

Column. It's abbreviated because is what's shown in the status bar to display the current line and column.

Does Symlink target mean "to create symlink of target ..." or "the target is a symlink"?

Symlink target is the symbolic link pointed location, so, the real path that points the symbolic link.

Thanks for trying to collaborate :)

NullPlane commented 6 months ago

Ya, it's doin something now but there's still a lot missing, I assume it's cuz early build. The xml is already done so far, but without refactoring and checking everything tho. image

SpartanJ commented 6 months ago

Ohhh, awesome!! It's not because of the early build, but because the keybinding names are taken from it's keybinding key, I forgot about that, we can fix it! You'll see the keybinding key / name at the right, for example: menu-toggle it's called "Menu Toggle" but only because I just transform the key name, I capitalize it and replace the - with spaces. That was my lazy solution, but let's do the following: I'll export all those keys to the language file, and I'll apply the translation if available. Give me some time and I'll send it to you. Awesome how much you were able to customize the editor. I'm really happy to see your screenshot.

SpartanJ commented 6 months ago

Oh, I also forgot about the strings inside the templates. Sorry! I'll try to get everything soon.

NullPlane commented 6 months ago

I'll definitely have to revamp the translation ig but here's the file for now.

de.xml

<?xml version="1.0"?>
<!--?yaml

    title: 'German Translation for ecode'
    author: 'NullPlane'
    author_link: 'https://github.com/NullPlane'
    collaborators: [ 'SpartanJ', 'NullPlane' ]
    version: 1.0
    created: 2024-02-08
    updated: 2024-02-09
    language: 'de'
    format: 'xml'
    file: 'de.xml'
    source: 'https://github.com/SpartanJ/eepp/tree/develop/bin/assets/i18n'
    credits: 'i18n/en.xml'
    license: 'MIT (respective)'

?-->    
<resources language="de">
    <string name="about_ecode">Über ecode...</string> 
    <string name="any_https_or_http_url">Jegliche http(s)-URL</string>
    <string name="any_name">Any name...</string>
    <string name="ask_close_tab">Diesen Tab schließen?</string>
    <string name="author">Autor</string>
    <string name="auto_close_brackets_and_tags">Klammern &amp; Tags automatisch vervollständigen</string> 
    <string name="auto_close_xml_tags">XML-Tags automatisch vervollständigen</string>
    <string name="auto_detect_indent_type_and_width">Einzugsart- &amp; weite automatisch erkennen</string>
    <string name="back_quotes">Backticks ``</string>
    <string name="brackets">Klammern ()</string>
    <string name="branches">Branches</string>
    <string name="build">Build</string>
    <string name="build_cloned_name">Neuer Name für Build-Klon:</string>
    <string name="build_elapsed_time">Verstrichene Zeit: %s.
</string>
    <string name="build_failed">In der Build-Ausführung traten Fehler auf
</string>
    <string name="build_name_not_found">Build-Name nicht gefunden!</string>
    <string name="build_os_not_supported">Betriebssystem von gegenwärtigem Build nicht unterstützt!</string>
    <string name="build_seetings">Build-Einstellungen</string>
    <string name="build_settings">Build-Einstellungen</string>
    <string name="build_step_num">Schritt %u: %s</string>
    <string name="build_successful">Build-Ausführung erfolgreich
</string>
    <string name="build_type_name">Name des Build-Typen:</string>
    <string name="build_type_name_del">Build-Typ entfernen: %s?</string>
    <string name="build_type_required">Build-Typ muss festgelegt sein!</string>
    <string name="cancel_build">Build abbrechen</string>
    <string name="cancel_clean">Bereinigung abbrechen</string>
    <string name="check_for_new_updates_at_startup">Bei Programmstart nach Aktualisierungen suchen</string>
    <string name="check_for_updates">Prüfe auf Aktualisierungen...</string>
    <string name="check_languages_health">Sprachenintegrität prüfen</string>
    <string name="clean">Bereinigen</string>
    <string name="clean_failed">In der Bereinigung traten Fehler auf
</string>
    <string name="clean_successful">Bereinigung erfolgreich abgeschlossen
</string>
    <string name="clear_menu">Menü bereinigen</string>
    <string name="cloned_name_must_be_different">Klon-Namen dürfen sich mit keinem bestehenden Namen decken.</string>
    <string name="close">Schließen</string>
    <string name="close_folder">Ordner schließen</string>
    <string name="close_folder_question">Ordner schließen?</string>
    <string name="close_title">%s schließen?</string>
    <string name="col_abbr">Sp.</string>
    <string name="collapse_all">Alle reduzieren</string>
    <string name="color_scheme_set">Farbschema: %s</string>
    <string name="command_palette">Befehlspalette...</string>
    <string name="commit">Commit</string>
    <string name="configure_ignore_files">Ignorierte Dateien konfigurieren...</string>
    <string name="configure_terminal_scrollback">Konsolenverlaufslänge ändern</string>
    <string name="configure_terminal_shell">Konsolen-Shell wählen</string>
    <string name="confirm_build_delete">Wollen Sie die Build-Konfiguration wiklich löschen?</string>
    <string name="confirm_close_folder">Einige Dateien wurden noch nicht gespeichert.
Wollen Sie den Ordner wirklich schließen?</string>
    <string name="confirm_close_tab">Diesen Tab wirklich schließen?
Alle Änderungen in "%s" gehen dann verloren.</string>
    <string name="confirm_ecode_exit">Soll ecode wirklich geschlossen werden?
Alle ungespeicherten Änderungen gehen dann verloren.</string>
    <string name="confirm_loading_font">Font-Ladebestätigung</string>
    <string name="confirm_remove_file">Wollen Sie "%s" wirklich entfernen?</string>
    <string name="copy">Kopieren</string>
    <string name="copy_containing_folder_path">Kopieren mit Ordnerpfad...</string>
    <string name="copy_error_message">Fehlermeldung kopieren</string>
    <string name="copy_file_path">Dateipfad kopieren</string>
    <string name="coudlnt_write_the_file">Datei konnte nicht geschrieben werden.</string>
    <string name="could_not_write_file">Dateispeicherung auf Datenträger fehlgeschlagen.
Bitte prüfen, ob Datei schreibgeschützt ist oder ecode nicht über die Schreibberechtigung verfügt.
Dateipfad: </string>
    <string name="couldnt_create_directory">Verzeichnis konnte nicht erstellt werden.</string>
    <string name="couldnt_create_ecode_dir">.ecode-Verzeichnis konnte im aktuellen Ordner nicht erstellt werden.</string>
    <string name="couldnt_create_file">Datei konnte nicht erstellt werden.</string>
    <string name="couldnt_create_folder_of_file">Ordner für Datei konnte nicht erstellt werden.</string>
    <string name="couldnt_remove">Fehler beim Entfernen von</string>
    <string name="couldnt_write_file">Datei konnte nicht auf Datenträger geschrieben werden.</string>
    <string name="create_new_file">Neues Dokument erstellen</string>
    <string name="create_new_folder">Neuen Ordner erstellen</string>
    <string name="curly_brackets">Geschweifte Klammern {}</string>
    <string name="current_document">Aktuelles Dokument</string>
    <string name="current_terminal">Aktuelle Konsole</string>
    <string name="cursor_blinking_time">Blinkdauer der Eingabemarke</string>
    <string name="custom_output_parser">Output-Parser anpassen</string>
    <string name="cut">Ausschneiden</string>
    <string name="dark">Dunkel</string>
    <string name="date">Datum</string>
    <string name="default_theme">Standard-Thema</string>
    <string name="delete">Löschen</string>
    <string name="directory">Verzeichnis</string>
    <string name="document">Dokument</string>
    <string name="document_symbol_find">Symbole im Dokument finden...</string>
    <string name="documents_settings">Dokumenteneinstellungen</string>
    <string name="double_quotes">Doppelte Anführungszeichen ""</string>
    <string name="duplicate_file">Dateiduplikat</string>
    <string name="ecode_no_updates_available">Gegenwärtig steht keine Aktualisierung an.</string>
    <string name="ecode_source">ecode-Quelltext...</string>
    <string name="ecode_unreleased_version">Sie führen eine unveröffentlichte Version von ecode aus.
Gegenwärtige Version: </string>
    <string name="ecode_updates_available"> ist verfügbar!
Möchten Sie das Programm jetzt aktualisieren?</string>
    <string name="edit">Bearbeiten</string>
    <string name="editor_font_size">Editor-Schriftgröße</string>
    <string name="empty_file_name">Der Dateiname darf nicht leer sein.</string>
    <string name="enable-vertical-scrollbar">Vertikale Scroll-Leiste aktivieren</string>
    <string name="enable_color_picker">Farbwähler aktivieren</string>
    <string name="enable_color_picker_tooltip">Aktiviert den Farbwähler bei Doppelklick
auf farbenrepräsentierende Wörter.</string>
    <string name="enable_color_preview">Farbvorschau aktivieren</string>
    <string name="enable_color_preview_tooltip">Aktiviert die Farbvorschau beim Halten der Maus
über farbenrepräsentierenden Wörtern.</string>
    <string name="enable_horizontal_scrollbar">Horizontale Scroll-Leiste aktivieren</string>
    <string name="enter_duplicate_file_name">Dateiname für Duplikat eingeben:</string>
    <string name="enter_new_file_name">Neuen Dateinamen eingeben:</string>
    <string name="enter_new_folder_name">Neuen Ordnernamen eingeben:</string>
    <string name="error">Fehler</string>
    <string name="error_checking_version">Prüfung auf Aktualisierungen fehlgeschlagen.</string>
    <string name="error_copying_file">Fehler beim Kopieren der Datei.</string>
    <string name="error_renaming_file">Fehler beim Umbenennen der Datei.</string>
    <string name="exclusive_mode">Exklusivmodus</string>
    <string name="execute_dir_in_terminal">Verzeichnis in der Konsole öffnen</string>
    <string name="execute_in_terminal">In der Konsole ausführen</string>
    <string name="expand_all">Alle erweitern</string>
    <string name="fallback_font">Reserve-Schriftart</string>
    <string name="feature_not_supported_in_emscripten">Diese Funktion wird nur in der ecode-Desktopversion unterstützt.</string>
    <string name="feature_not_supported_in_os">Diese Funktion wird vom derzeitigen Betriebssystem nicht unterstützt</string>
    <string name="file">Datei</string>
    <string name="file_already_exists">Diese Datei existiert bereits!</string>
    <string name="file_type">Dateityp</string>
    <string name="find_replace">Suchen/Ersetzen</string>
    <string name="folder_project_settings">Ordner-/Projekteinstellungen</string>
    <string name="folder_settings">Ordner-/Projekteinstellungen</string>
    <string name="force_new_line_at_end_of_file">Neuzeile am Dokumentende erzwingen</string>
    <string name="formatter-format-document">Dokument formatieren</strihttps://ng>
    <string name="frame_rate_limit">Bildwiederholratenbegrenzung</string>
    <string name="frame_rate_limit_applied">Bildwiederholratenbegrenzung angewendet</string>
    <string name="fullscreen_mode">Vollbildmodus</string>
    <string name="git">Git</string>
    <string name="git_add_branch">Zweig hinzufügen</string>
    <string name="git_ammend">Letzten Commit abändern</string>
    <string name="git_apply_stash_title">Stash anwenden</string>
    <string name="git_bypass_hook">Commit-Hook meiden</string>
    <string name="git_changed">Geändert</string>
    <string name="git_checkout">Auschecken</string>
    <string name="git_commit">Commit</string>
    <string name="git_commit_message">Commit-Nachricht:</string>
    <string name="git_confirm">Bestätigen</string>
    <string name="git_confirm_apply_stash">Einen zuvor gespeicherten Stash anwenden?</string>
    <string name="git_confirm_branch_delete">Sind Sie sicher, dass Sie Zweig "%s" löschen ?</string>
    <string name="git_confirm_branch_merge">Sind Sie sicher, dass Sie aus Zweig "%s" vereinigen möchten?</string>
    <string name="git_confirm_discard_changes">Sind Sie sicher, dass Sie alle Änderungen verwerfen möchten: "%s"?</string>
    <string name="git_confirm_drop_stash">Sind Sie sicher, dass Sie den ausgewählten Stash fallen lassen möchten?</string>
    <string name="git_confirm_push_changes">Sind Sie sicher, dass Sie lokale Änderungen gen Remoteserver pushen wollen?</string>
    <string name="git_create_branch_ask">Neuen Zweig am aktuellen Zweig erstellen (HEAD).
Zweignamen eingeben:</string>
    <string name="git_create_local_branch">Lokalen Zweig erstellen?</string>
    <string name="git_drop_stash_title">Stash fallen lassen</string>
    <string name="git_ignored">Ignoriert</string>
    <string name="git_local_branches">Lokale Zweige</string>
    <string name="git_not_found">Git-Anwendungsdatei nicht gefunden.
Bitte Zugänglichkeit von Git über PATH prüfen</string>
    <string name="git_nothing_to_commit">Keine Änderungen für Commit</string>
    <string name="git_push_commit">Commit-Push</string>
    <string name="git_remote_branches">Remote-Zweige</string>
    <string name="git_rename_branch">Zweig umbenennen</string>
    <string name="git_rename_branch_ask">Neuen Zweignamen eingeben: '%s'</string>
    <string name="git_restore_index">Index wiederherstellen</string>
    <string name="git_staged">Staged</string>
    <string name="git_stash_keep_index">Index beibehalten</string>
    <string name="git_stash_keep_working_tree">Arbeitsbaum beibehalten</string>
    <string name="git_stash_push">Lokale Änderungen stashen
Stash benennen (optional):</string>
    <string name="git_stash_save">Stash speichern</string>
    <string name="git_stashes">Stashes</string>
    <string name="git_tags">Tags</string>
    <string name="git_unmerged">Unvereinigt</string>
    <string name="git_untracked">Unverfolgt</string>
    <string name="global_settings">Globale Konfiguration</string>
    <string name="glversion_changed">Renderer-Version verändert.
Für sichtbare Änderung ecode neu starten.</string>
    <string name="go_to_line">Zu Zeile springen...</string>
    <string name="go_to_line_in_current_document">In aktuellem Dokument zu Zeile springen</string>
    <string name="group">Gruppierung</string>
    <string name="h_as_cpp">.h-Dateien als C++-Code ansehen.</string>
    <string name="help">Hilfe</string>
    <string name="hide_tabbar_on_single_tab">Tableiste bei einzelnem Tab ausblenden</string>
    <string name="hide_tabbar_on_single_tab_tooltip">Blendet die Tableiste bei einem einzelnen Element im Tab-Widget aus.</string>
    <string name="highlight_current_line">Aktuelle Zeile markieren</string>
    <string name="highlight_matching_brackets">Klammerpaare markieren</string>
    <string name="highlight_selection_match">Auf Auswahl passenden Text markieren</string>
    <string name="indent_width">Einrückweite</string>
    <string name="indentation_type">Einrückungsart</string>
    <string name="inode">Inode</string>
    <string name="insert_search_query">Suchanfrage einfügen</string>
    <string name="inspect_widgets">Widgets einsehen</string>
    <string name="key_bindings">Tastenzuweisungen</string>
    <string name="light">Hell</string>
    <string name="line">Zeile</string>
    <string name="line_abbr">Z.</string>
    <string name="line_breaking_column">Umbruchspalte</string>
    <string name="line_endings">Zeilenendungen</string>
    <string name="line_spacing">Zeilenabstand</string>
    <string name="load_cur_dir_as_folder">Aktuelles Dokumentverzeichnis als Ordner laden</string>
    <string name="locate">Finden...</string>
    <string name="message">Nachricht</string>
    <string name="mode">Modus</string>
    <string name="modified">Verändert</string>
    <string name="monospace_font">Monospace-Schriftart...</string>
    <string name="move_panel_left">Panel nach links bewegen...</string>
    <string name="move_panel_right">Panel nach rechts bewegen...</string>
    <string name="msg_box_cancel">Abbrechen</string>
    <string name="msg_box_no">Nein</string>
    <string name="msg_box_ok">Ok</string>
    <string name="msg_box_retry">Wiederholen</string>
    <string name="msg_box_yes">Ja</string>
    <string name="multisamples_changed">Multisample-Antialiasing-Stufe festgelegt.
Für sichtbare Änderung ecode neu starten.</string>
    <string name="name">Name</string>
    <string name="new_file">Neue Datei...</string>
    <string name="new_file_in_directory">Neue Datei im Verzeichnis...</string>
    <string name="new_file_in_file_folder">Neue Datei im gleichen Dateiordner...</string>
    <string name="new_folder">Neuer Ordner...</string>
    <string name="new_name">Neuer Name</string>
    <string name="new_terminal">Neue Konsole</string>
    <string name="new_terminal_behavior">Neues Konsolenverhalten</string>
    <string name="new_terminal_name">Neuer Konsolenname:</string>
    <string name="new_ui_scale_factor">Neuer Skalierungsfaktor für Oberfläche zugewiesen.
Bitte Starten Sie ecode neu.</string>
    <string name="new_value">Neuer Wert</string>
    <string name="new_window">Neues Fenster</string>
    <string name="no_build_has_been_run">Kein Build wurde ausgeführt</string>
    <string name="no_code_action">Keine Code-Aktion</string>
    <string name="no_open_document">Kein Dokument geöffnet</string>
    <string name="no_running_lsp_server">Kein laufender LSP-Server</string>
    <string name="no_threads">Zum Kompilieren von Builds muss ecode in Threads laufen.</string>
    <string name="none">Keines</string>
    <string name="not_found_in_path">Unter $PATH nicht gefunden</string>
    <string name="open">Öffnen</string>
    <string name="open_containin_folder">Ordner aktueller Datei öffnen...</string>
    <string name="open_containing_folder">Ordner aktueller Datei öffnen...</string>
    <string name="open_documents">Dokumente öffnen</string>
    <string name="open_file">Datei öffnen</string>
    <string name="open_file_from_web">Datei aus dem Netz öffnen...</string>
    <string name="open_first_a_folder">Zuerst muss ein Ordner geöffnet werden.</string>
    <string name="open_folder">Ordner öffnen...</string>
    <string name="open_in_horizontal_split">In neuer horizontaler Kachel öffnen</string>
    <string name="open_in_new_window">In neuem Fenster öffnen...</string>
    <string name="open_in_same_tabbar">In aktueller Tableiste öffnen</string>
    <string name="open_in_vertical_split">In neuer vertikaler Kachel öffnen</string>
    <string name="owner">Eigentümer</string>
    <string name="paste">Einfügen</string>
    <string name="path">Pfad</string>
    <string name="pattern">Schema</string>
    <string name="please_enter_file_url">Bitte Datei-URL eingeben...</string>
    <string name="plugin_manager">Erweiterungen verwalten</string>
    <string name="pluginsmodel_description">Beschreibung</string>
    <string name="pluginsmodel_enabled">Aktiv</string>
    <string name="pluginsmodel_id">ID</string>
    <string name="pluginsmodel_title">Titel</string>
    <string name="pluginsmodel_version">Version</string>
    <string name="portable_mode_failed">Portabler Modus schlug fehl.
Bitte das Programmverzeichnis auf Schreibrechte prüfen.</string>
    <string name="process_exited_normally">Prozess "%s" wurde normal beendet.
</string>
    <string name="process_exited_with_errors">Prozess "%s" wurde mit Fehlern beendet.
</string>
    <string name="project_find">Projekt finden...</string>
    <string name="quit">Beenden</string>
    <string name="read_only">Read-Only</string>
    <string name="recent_files">Letzte Dateien</string>
    <string name="recent_folders">Letzte Ordner</string>
    <string name="redo">Wiederholen</string>
    <string name="refresh_view">Ansicht aktualisieren...</string>
    <string name="remove">Entfernen...</string>
    <string name="remove_file_question">Datei entfernen?</string>
    <string name="rename">Umbenennen</string>
    <string name="rename_file">Datei umbenennen</string>
    <string name="rename_session">Sitzung umbenennen</string>
    <string name="reopen_closed_document">Geschlossenes Dokument wiederherstellen</string>
    <string name="restore_last_session_at_startup">Letzte Sitzung beim Start wiederherstellen</string>
    <string name="running_steps_for_project">Schritte ausführen für Projekt %s...
</string>
    <string name="save">Speichern</string>
    <string name="save_all">Alles speichern</string>
    <string name="save_as">Speichern unter...</string>
    <string name="save_file_as">Datei speichern als</string>
    <string name="search_for_document_symbols">Aktuelles Dokument nach Symbolen durchsuchen</string>
    <string name="search_for_workspace_symbols">Nach Arbeitsbereichssymbolen suchen</string>
    <string name="search_in_command_palette">In der Befehlspalette suchen</string>
    <string name="select_all">Alles auswählen</string>
    <string name="select_font_file">Font-Datei auswählen</string>
    <string name="serif_font">Serifenschriftart...</string>
    <string name="set_cursor_blinking_time">Blinkdauer der Eingabemarke festlegen:
Auf 0 setzen zum Deaktivieren.
</string>
    <string name="set_editor_font_size">Editor-Schriftgröße festlegen:</string>
    <string name="set_frame_rate_limit">Bildwiederholrate begrenzen:
Auf 0 setzen zum Deaktivieren.
</string>
    <string name="set_line_breaking_column">Umbruchspalte festlegen:
Auf 0 setzen zum Deaktivieren.
</string>
    <string name="set_line_spacing">Zeilenabstand festlegen:
Auf 0 setzen zum Deaktivieren.
</string>
    <string name="set_side_panel_font_size">Schriftgröße des Seitenpaneels festlegen:</string>
    <string name="set_terminal_font_size">Schriftgröße in der Konsole festlegen:</string>
    <string name="set_ui_font_size">Schriftgröße der Oberfläche festlegen:</string>
    <string name="set_ui_scale_factor">Oberflächenskalierung festlegen (Pixeldichte):
Minimalwert ist 1, Maximalwert 6. Anwendungsneustart benötigt.</string>
    <string name="shell">Shell</string>
    <string name="show_console">Konsole anzeigen</string>
    <string name="show_doc_info">Dokumentinformationen anzeigen</string>
    <string name="show_hidden_files">Versteckte Dateien anzeigen</string>
    <string name="show_image_preview">Bildervorschau anzeigen</string>
    <string name="show_indentation_guides">Einrückhilfen anzeigen</string>
    <string name="show_line_endings">Zeilenendungen anzeigen</string>
    <string name="show_line_numbers">Zeilennummerierungen anzeigen</string>
    <string name="show_lines_relative_position">Relative Zeilenposition anzeigen</string>
    <string name="show_minimap">Miniaturansicht anzeigen</string>
    <string name="show_open_documents">Offene Dokumente anzeigen...</string>
    <string name="show_side_panel">Seitenpaneel anzeigen</string>
    <string name="show_status_bar">Statusleiste anzeigen</string>
    <string name="show_white_spaces">Leerzeichen visualisieren</string>
    <string name="single_quotes">Einfache Anführungszeichen ''</string>
    <string name="size">Größe</string>
    <string name="source_control">Quellcode-Verwaltung</string>
    <string name="spaces">Leerzeichen</string>
    <string name="split_bottom">Kachelung am Fußende</string>
    <string name="split_left">Kachelung links</string>
    <string name="split_right">Kachelung rechts</string>
    <string name="split_top">Kachelung am Kopfende</string>
    <string name="square_brakcets">Eckige Klammern []</string>
    <string name="starting_process">Starte %s %s
</string>
    <string name="status">Status</string>
    <string name="switch_build">Build wechseln</string>
    <string name="switch_build_type">Build-Typ wechseln</string>
    <string name="symlink_target">Symlink-Ziel</string>
    <string name="sync_project_tree">Projektbaum mit Editor synchronisieren</string>
    <string name="sync_project_tree_tooltip">Synchronisiert derzeit fokussiertes Dokument als gewählte
Datei im Verzeichnisbaum.</string>
    <string name="syntax_color_scheme">Syntax-Farbschema</string>
    <string name="tab_width">Tabweite</string>
    <string name="tabs">Tabs</string>
    <string name="terminal">Konsole</string>
    <string name="terminal_color_scheme">Konsolenfarbschema</string>
    <string name="terminal_color_scheme_set">Konsolenfarbschema: %s</string>
    <string name="terminal_font">Konsolenschriftart...</string>
    <string name="terminal_font_size">Größe der Konsolenschriftart</string>
    <string name="terminal_split_bottom">Konsolenkachelung am Fußende</string>
    <string name="terminal_split_left">Konsolenkachelung links</string>
    <string name="terminal_split_right">Konsolenkachelung rechts</string>
    <string name="terminal_split_top">Konsolenkachelung am Kopfende</string>
    <string name="tools">Werkzeuge</string>
    <string name="treeview_single_click_nav">In Baumansicht mit einfachem Klick navigieren</string>
    <string name="trim_trailing_whitespaces">Leerzeichen nach den Enden beschneiden</string>
    <string name="type">Typ</string>
    <string name="ui_font_size">Schriftgröße der Oberfläche</string>
    <string name="ui_multisamples_level">Multisample-Anti-Aliasing-Stufe</string>
    <string name="ui_panel_font_size">Schriftgröße im Paneel der Oberfläche</string>
    <string name="ui_prefes_color_scheme">Bevorzugte Oberflächenfarbe</string>
    <string name="ui_renderer">Renderer</string>
    <string name="ui_renderer_version">Renderer-Version</string>
    <string name="ui_scale_factor">Oberflächenskalierung (Pixeldichte)</string>
    <string name="ui_thene">Thema der Oberfläche</string>
    <string name="uifiledialog_cancel">Abbrechen</string>
    <string name="uifiledialog_create_new_folder">Neuen Ordner erstellen</string>
    <string name="uifiledialog_enter_new_folder_name">Neuen Ordnernamen eingeben:</string>
    <string name="uifiledialog_file_name">Dateiname:</string>
    <string name="uifiledialog_files_of_type">Dateien vom Typ:</string>
    <string name="uifiledialog_go_up">Nach Oben</string>
    <string name="uifiledialog_list">Liste</string>
    <string name="uifiledialog_look_in">Suchen in:</string>
    <string name="uifiledialog_new_folder">Neuer Ordner</string>
    <string name="uifiledialog_open">Öffnen</string>
    <string name="uifiledialog_save">Speichern</string>
    <string name="uifiledialog_select_file">Eine Datei auswählen</string>
    <string name="uifiledialog_select_folder">Einen Ordner auswählen</string>
    <string name="uifiledialog_table">Tabelle</string>
    <string name="undo">Rückgängig</string>
    <string name="use_global_settings">Globale Einstellungen benutzen</string>
    <string name="using_build_type">Verwendeter Build-Typ: %s.
</string>
    <string name="view">Ansicht</string>
    <string name="vsync">VSync</string>
    <string name="vsync_changed">VSync-Konfiguration geändert.
Für sichtbare Änderung ecode neu starten.</string>
    <string name="welcome">Willkommen</string>
    <string name="window">Fenster</string>
    <string name="working_dir_at">Arbeitspfad %s
</string>
    <string name="workspace_symbol_find">Arbeitsbereichssymbol suchen...</string>
    <string name="write_unicode_bom">Unicode-BOM schreiben</string>
    <string name="zoom_in">Hereinzoomen</string>
    <string name="zoom_out">Herauszoomen</string>
    <string name="zoom_reset">Zoom zurücksetzen</string>
</resources>
NullPlane commented 6 months ago

Just found that setting xml-tag to de seems not to work no more. Had forgotten to set it from en.

SpartanJ commented 6 months ago

Don't worry, I'll fix it! Thanks!

NullPlane commented 6 months ago

Probably best would be to find collaborators/translators for all the core languages that provide most scientific literature first. That'd be German (done), English (default), Russian, Chinese (@THZrry), French, Japanese, did I forget any?

SpartanJ commented 6 months ago

Sounds good, I'll do Spanish at some point, I'm just too lazy but that's my native language so I should do it.

emeraldtip commented 6 months ago

I'll do Estonian

SpartanJ commented 6 months ago

Just found that setting xml-tag to de seems not to work no more. Had forgotten to set it from en.

The file is malformed at line 150: <string name="formatter-format-document">Dokument formatieren</strihttps://ng>

I should add linter support for XML (I think I can bring it nativelly without dependencies)

I'll do Estonian

Awesome!!

SpartanJ commented 6 months ago

English default language file has been updated, sorry that I has changed quite a lot, since I missed many items the first time, also I had to rename several items so this is a big refactor: en.xml. Languages now also need a "title", since I added a menu to select the language I needed to display a readable name, so "en.xml" has a title attribute of "English". I think this time we should be really close to cover 100% of the language strings, but I'm sure I'll miss some language string here and there, but let's wait to get reported, this version should be enough, almost 700 entries it's much more than I would have expected.

emeraldtip commented 6 months ago

Line 36 in the new english language file:

<string name="build_seetings">Build Settings</string>

Can I remove this line or will it break things? It just seems to be a typo-name thing so Ig I can remove it?

SpartanJ commented 6 months ago

Keep it, and I'll just fix the key later to all langs. So, don't worry.

NullPlane commented 5 months ago

Has been a while, hasn't it?

[GERMAN] v0.2 refactor is here.

For any imminent errors or missing strings that need language knowledge, please ask.

Still some stuff missing but that's fine. I could not check all strings, there is probably a lot of stuff out of bounds or somewhere where it shouldn't be etc. I did not find any such strings yet but I just scanned some settings and stuff quickly, I did not really search the app thoroughly.

image

0.2 may be grabbed here under https://dub.sh/nullplane/ecode/localization/de. The link is case sensitive.

THZrry commented 5 months ago

Awsome. My translation for Simplified Chinese has almost been completed. It must covers over 90% strings now. See the image:

zhcntranslate

Here's the translation file: zh_CN.zip Though I spent not enough time on it, the translations still needs improving. I will continue improving this.

NullPlane commented 5 months ago

Awsome. My translation for Simplified Chinese has almost been completed. It must covers over 90% strings now. See the image:

zhcntranslate

Here's the translation file: zh_CN.zip Though I spent not enough time on it, the translations still needs improving. I will continue improving this.

@THZrry I am not sure if I'll keep it but maybe put it in a gist too, as there you can just update it anytime in future versions and once the link is collected, you may just update it in the gist.

I did it as a comment before but @SpartanJ if YAML-integration would be implemented and there was a working key appver or anything, it may actually be pulled automatically to the project or smth. but that's a hassle for itself tho. Just maybe at some point in the future :)

THZrry commented 5 months ago

That seems good. But how I can merge translation files? Using git? Or this project can setup a crowdin page? I don't know much on this.

NullPlane commented 5 months ago

That seems good. But how I can merge translation files? Using git? Or this project can setup a crowdin page? I don't know much on this.

Just post updated versions to your gist. There is features to pull from there or one may even just copy the code. The good thing is, that it is like a blog and any newer versions may just be put there. Too much to think about but just to have a place where you may order these translations and versions. I think one doesn't need a full git repo there just for a translation and gist is perfect for it.

SpartanJ commented 5 months ago

Thank you so much for your collaboration! Please give me some time to organize how are we going to maintain these files, I have no definition yet. I think that probably the simplest way is to just send a PR to the eepp repo. I'll be adding these new files manually so don't worry for the moment.

SpartanJ commented 5 months ago

German and Chinese files has been added a couple of days ago. Thank you again for your contribution. Please, let's try to create PRs to update the translations. Also I will need to incorporate some tool to detect the missing keys in translation files, so they can be updated with more ease.

NullPlane commented 4 months ago

Is there a repo yet? As said, you may want to set it up yourself; Idk if there's the same lang capabilities in any other eepp app but a general i18n-project may make stuff easier for you.

THZrry commented 4 months ago

I think translations need a better home too. gist is one way. Is there any way else( like crowdin? )? How to merge new translations is another question. Should I create a simple python script to get untranslated keys?

SpartanJ commented 4 months ago

Maybe a gist is a good idea. What we can do:

  1. For each language translation have an oficial gist URL.
  2. Add a small script on the repository to pull and update the languages from the gist URLs.
  3. Add a translator tool, to simplify the whole process for the translators, it shouldn't be hard, I'm thinking in something similar to what Android Studio provides: like this.
NullPlane commented 3 months ago

Suggestion

link this issue on the core page README