Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion GEOLIBRE_PARITY.md
Original file line number Diff line number Diff line change
Expand Up @@ -278,7 +278,7 @@ _GeoLibre: docs/user-guide/ai-assistant.md, docs/features.md › AI, Python, and
_GeoLibre: docs/features.md › Platforms and interface; docs/i18n.md_

- [ ] **More languages and right-to-left layout**: GeoLibre has 20 languages including Arabic,
Persian and Hebrew. Partial: 18 languages; Persian text is drawn right to left, while the panes
Persian and Hebrew. Partial: 19 languages; Persian text is drawn right to left, while the panes
keep their left-to-right layout.
- [ ] **Translated geoprocessing tool names**. Missing (possibly deliberate).
- [ ] **Keyboard-shortcut cheat sheet**. Partial: Command Search; rebindable shortcuts are on the
Expand Down
4 changes: 2 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@
<p align="center">
<img alt="Written in Rust" src="https://img.shields.io/badge/written%20in-Rust-b84a2c?style=flat-square&logo=rust&logoColor=white">
<img alt="License: Apache-2.0" src="https://img.shields.io/badge/license-Apache--2.0-2563eb?style=flat-square">
<img alt="18 languages" src="https://img.shields.io/badge/languages-18-0e9384?style=flat-square">
<img alt="19 languages" src="https://img.shields.io/badge/languages-19-0e9384?style=flat-square">
<a href="https://plugins.rustgis.app"><img alt="Plugins" src="https://img.shields.io/badge/plugins-registry-7c3aed?style=flat-square"></a>
<a href="https://pypi.org/project/rustgis/"><img alt="PyPI" src="https://img.shields.io/pypi/v/rustgis?style=flat-square&logo=python&logoColor=white&label=pypi"></a>
<a href="https://colab.research.google.com/github/opengeos/RustGIS/blob/main/apps/rustgis-python/examples/getting-started.ipynb"><img alt="Open in Colab" src="https://colab.research.google.com/assets/colab-badge.svg"></a>
Expand Down Expand Up @@ -105,7 +105,7 @@ Every screenshot is RustGIS itself, rendered offscreen by `cargo run -p rustgis-
| **Sharing** | PNG export at any DPI; PDF; web map pages, OGC API Features collections, MapLibre styles, glTF scenes, locators; project, map and mobile map packages; offline areas with sync |
| **AI Assistant** | Ask about your data or tell the map what to do in plain language, with Anthropic, OpenAI (a key, or your ChatGPT plan by signing in), Gemini, OpenRouter, Ollama or any OpenAI-compatible model; also `rustgis-cli ask`, and an [MCP server](docs/mcp.md) (`rustgis-cli mcp`) for Claude Code, Cursor, VS Code and other agents |
| **Plugins** | Sandboxed WebAssembly [plugins](docs/plugins.md) add commands, tools and ribbon tabs; install them from [plugins.rustgis.app](https://plugins.rustgis.app) on the desktop, command line and web |
| **Interface** | Layers, Browser and Data Sources panes as tabs, command search (Ctrl+K), keyboard shortcuts, dark mode, a customizable ribbon and Quick Access Toolbar, linked side-by-side maps, 18 languages |
| **Interface** | Layers, Browser and Data Sources panes as tabs, command search (Ctrl+K), keyboard shortcuts, dark mode, a customizable ribbon and Quick Access Toolbar, linked side-by-side maps, 19 languages |

The [user guide](https://rustgis.app/user-guide/) covers each area in detail,
[Comparison](https://rustgis.app/comparison/) sets RustGIS beside GeoLibre, QGIS and ArcGIS, and
Expand Down
3 changes: 2 additions & 1 deletion crates/ui-egui/src/i18n/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -83,7 +83,7 @@ macro_rules! lang {
}

/// The registry. English first: it is the source language and the fallback.
pub static LANGUAGES: [LangInfo; 18] = [
pub static LANGUAGES: [LangInfo; 19] = [
LangInfo {
code: "en",
name: "English",
Expand All @@ -98,6 +98,7 @@ pub static LANGUAGES: [LangInfo; 18] = [
lang!("fr", "Français", "French", Script::Alphabetic, "fr.tsv"),
lang!("it", "Italiano", "Italian", Script::Alphabetic, "it.tsv"),
lang!("nl", "Nederlands", "Dutch", Script::Alphabetic, "nl.tsv"),
lang!("pl", "Polski", "Polish", Script::Alphabetic, "pl.tsv"),
lang!("pt", "Português", "Portuguese", Script::Alphabetic, "pt.tsv"),
lang!("ru", "Русский", "Russian", Script::Alphabetic, "ru.tsv"),
lang!("tr", "Türkçe", "Turkish", Script::Alphabetic, "tr.tsv"),
Expand Down
3,563 changes: 3,563 additions & 0 deletions crates/ui-egui/src/i18n/pl.tsv

Large diffs are not rendered by default.

11 changes: 11 additions & 0 deletions crates/ui-egui/src/i18n/tests.rs
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,7 @@ fn lookup_fallback_and_tags() {
assert_eq!(lang_from_tag("de_DE.UTF-8").map(Lang::code), Some("de"));
assert_eq!(lang_from_tag("pt-BR").map(Lang::code), Some("pt"));
assert_eq!(lang_from_tag("bn-BD").map(Lang::code), Some("bn"));
assert_eq!(lang_from_tag("pl_PL.UTF-8").map(Lang::code), Some("pl"));
assert_eq!(lang_from_tag("zh-Hans-CN").map(Lang::code), Some("zh"));
assert_eq!(lang_from_tag("zh_CN.UTF-8").map(Lang::code), Some("zh"));
assert_eq!(lang_from_tag("zh-TW"), None);
Expand All @@ -51,6 +52,16 @@ fn bengali_registration_and_fallback() {
assert_eq!(tr(bn, "A string not in the Bengali catalog"), "A string not in the Bengali catalog");
}

#[test]
fn polish_registration_and_fallback() {
let pl = Lang::from_code("pl").unwrap_or(Lang::EN);
assert_eq!(pl.name(), "Polski");
assert_eq!(pl.english(), "Polish");
assert_eq!(pl.script(), Script::Alphabetic);
assert_eq!(tr(pl, "Open"), "Otwórz");
assert_eq!(tr(pl, "A string not in the Polish catalog"), "A string not in the Polish catalog");
}

#[test]
fn plugin_strings_use_the_plugins_translations() {
use rustgis_engine::plugins;
Expand Down
9 changes: 5 additions & 4 deletions docs/i18n.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# Languages

RustGIS's interface is available in 18 languages:
RustGIS's interface is available in 19 languages:

| Language | Code | | Language | Code |
| --- | --- | --- | --- | --- |
Expand All @@ -10,9 +10,10 @@ RustGIS's interface is available in 18 languages:
| Français (French) | `fr` | | Bahasa Indonesia (Indonesian) | `id` |
| Italiano (Italian) | `it` | | Tiếng Việt (Vietnamese) | `vi` |
| Nederlands (Dutch) | `nl` | | 简体中文 (Chinese, Simplified) | `zh` |
| Português (Portuguese) | `pt` | | 日本語 (Japanese) | `ja` |
| ქართული (Georgian) | `ka` | | 한국어 (Korean) | `ko` |
| فارسی (Persian) | `fa` | | বাংলা (Bengali) | `bn` |
| Polski (Polish) | `pl` | | 日本語 (Japanese) | `ja` |
| Português (Portuguese) | `pt` | | 한국어 (Korean) | `ko` |
| ქართული (Georgian) | `ka` | | বাংলা (Bengali) | `bn` |
| فارسی (Persian) | `fa` | | | |

## Choosing a language

Expand Down
2 changes: 1 addition & 1 deletion docs/sponsor.md
Original file line number Diff line number Diff line change
Expand Up @@ -54,7 +54,7 @@ Sponsorship is not the only currency, and none of these cost anything:
worth a great deal.
- **Contribute code or plugins**: see [Contributing](contributing.md) and
[Plugins](plugins.md#writing-a-plugin).
- **Translate the interface**: RustGIS ships in 18 languages; see [Languages](i18n.md) to add or
- **Translate the interface**: RustGIS ships in 19 languages; see [Languages](i18n.md) to add or
improve one.

## Thank you
Expand Down
2 changes: 1 addition & 1 deletion docs/user-guide/workspace.md
Original file line number Diff line number Diff line change
Expand Up @@ -201,7 +201,7 @@ duplication and nudging have their own [layout shortcuts](layouts.md#layouts).
- **Plugins**: **Plugins › Plugin Manager** installs, updates and removes [plugins](../plugins.md)
from the registry at [plugins.rustgis.app](https://plugins.rustgis.app) or from a file.
- **Language**: **Settings › Language** switches the interface among
[18 languages](../i18n.md) and chooses the [worldview](maps.md#worldview) of the built-in
[19 languages](../i18n.md) and chooses the [worldview](maps.md#worldview) of the built-in
borders.
- **Start-up**: **Settings › Start-up** sets what RustGIS opens with: **Start With** the World Atlas
sample or a blank map, or, in the desktop app, **Last Project** (the `.rgis` project last opened
Expand Down
Loading