Skip to content

Commit 7c6925f

Browse files
authored
Write first draft of scientific python translations website (#1)
1 parent 233b6de commit 7c6925f

24 files changed

+5337
-0
lines changed

.gitmodules

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
[submodule "themes/scientific-python-hugo-theme"]
2+
path = themes/scientific-python-hugo-theme
3+
url = https://github.com/scientific-python/scientific-python-hugo-theme

Makefile

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
.PHONY: help themes html serve clean
2+
.DEFAULT_GOAL := help
3+
4+
help:
5+
@grep ": ##" Makefile | grep -v grep | tr -d '#'
6+
7+
themes/scientific-python-hugo-theme:
8+
@if [ ! -d "$<" ]; then \
9+
echo "*** ERROR: missing theme" ; \
10+
echo ; \
11+
echo "It looks as though you are missing the themes directory."; \
12+
echo "You need to add the scientific-python-hugo-theme as a submodule."; \
13+
echo ; \
14+
echo "Please see https://theme.scientific-python.org/getstarted/"; \
15+
echo ; \
16+
exit 1; \
17+
fi
18+
19+
content/shortcodes.md:
20+
cp content/shortcodes.md.stub content/shortcodes.md
21+
22+
themes: themes/scientific-python-hugo-theme
23+
24+
html: ## Build site in `./public`
25+
html: themes content/shortcodes.md
26+
hugo
27+
28+
serve: ## Serve site, typically on http://localhost:1313
29+
serve: themes content/shortcodes.md
30+
@hugo --printI18nWarnings server
31+
32+
clean: ## Remove built files
33+
clean:
34+
rm -rf public

assets/css/custom.css

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
.navbar-logo-text {
2+
font-family: "Lato";
3+
}

config.yaml

Lines changed: 62 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,62 @@
1+
baseURL: "https://scientific-python-translations.github.io/"
2+
languageCode: "en-us"
3+
title: "Scientific Python Translations"
4+
theme: scientific-python-hugo-theme
5+
relativeURLs: true
6+
disableKinds: ["taxonomy"]
7+
8+
markup:
9+
highlight:
10+
noClasses: false
11+
goldmark:
12+
renderer:
13+
unsafe: true
14+
renderHooks:
15+
link:
16+
enableDefault: true
17+
18+
params:
19+
author:
20+
name: "Scientific Python Translations team"
21+
description: "Documentation & FAQ for Scientific Python Translations project."
22+
images:
23+
- /images/logo.svg
24+
navbarlogo:
25+
image: logo.svg
26+
text: Scientific Python Translations
27+
link: /
28+
hero:
29+
title: Scientific Python Translations
30+
image: logo.svg
31+
navbar:
32+
- title: FAQ
33+
url: /faq/
34+
- title: News
35+
url: /news/
36+
- title: About
37+
url: /about/
38+
# - title: Contribute
39+
# url: /contribute/
40+
footer:
41+
logo: logo.svg
42+
socialmediatitle: ""
43+
socialmedia:
44+
- link: https://github.com/scientific-python-translations/
45+
icon: github
46+
47+
quicklinks:
48+
column1:
49+
title: ""
50+
links:
51+
- text: FAQ
52+
link: /faq/
53+
- text: News
54+
link: /news/
55+
- text: About
56+
link: /about/
57+
# - text: Contribute
58+
# link: /contribute/
59+
column2:
60+
links:
61+
column3:
62+
links:

content/_index.md

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
---
2+
title:
3+
---
4+
5+
{{< grid columns="1 3 3 3" >}}
6+
7+
[[item]]
8+
type = 'card'
9+
title = 'Mission'
10+
body = '''
11+
To develop and publish translations of the websites for the
12+
[Scientific Python Core Projects](https://scientific-python.org/specs/core-projects/).
13+
'''
14+
15+
[[item]]
16+
type = 'card'
17+
title = 'Funding'
18+
body = '''
19+
Supported by the CZI
20+
[Scientific Python Community & Communications Infrastructure](https://scientific-python.org/doc/scientific-python-community-and-communications-infrastructure-2022.pdf)
21+
grant.
22+
'''
23+
24+
[[item]]
25+
type = 'card'
26+
title = 'See'
27+
body = '''
28+
Translations into Brazlian and Portuguese already published for https://numpy.org/!
29+
'''
30+
31+
{{< /grid >}}

content/_index.md~

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
---
2+
title:
3+
---
4+
5+
{{< grid columns="1 3 3 3" >}}
6+
7+
[[item]]
8+
type = 'card'
9+
title = 'Documented'
10+
body = '''
11+
The theme is documented at https://theme.scientific-python.org.
12+
'''
13+
14+
[[item]]
15+
type = 'card'
16+
title = 'Reusable'
17+
body = '''
18+
The theme is being used by
19+
[scientific-python.org](https://github.com/scientific-python/scientific-python.org),
20+
[numpy.org](https://github.com/numpy/numpy.org), and
21+
[scipy.org](https://github.com/scipy/scipy.org).
22+
'''
23+
24+
[[item]]
25+
type = 'card'
26+
title = 'Community Maintained'
27+
body = '''
28+
The theme is maintained by the [Theme Team](/about/).
29+
'''
30+
31+
{{< /grid >}}

content/about.md

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
---
2+
title: "About"
3+
draft: false
4+
---
5+
6+
Funded by the [Scientific Python Community and Communications Infrastructure grant](https://scientific-python.org/doc/scientific-python-community-and-communications-infrastructure-2022.pdf) from the [Chan Zuckerberg Initiative](https://chanzuckerberg.com/) (CZI), [Scientific Python](https://scientific-python.org/) and [Quansight Labs](https://labs.quansight.org/) are able to offer assistance to the maintainer teams of the [Scientific Python Core Projects](https://scientific-python.org/specs/core-projects/) to develop and publish translations of their core project websites. The goal is to allow as much of the necessary work as possible to be offloaded onto a small team of Quansight Labs staff working across the different projects, freeing busy maintainers from the burden of setting up translation infrastructure and recruiting and coordinating with translators, and helping to integrate these translations into the project websites. See the [FAQ](/faq) for more information.

content/contribute/_index.md

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
---
2+
title: "Contribute"
3+
draft: true
4+
---
5+
6+
If you'd like to help out with the effort to translate the web pages of the Scientific Python core projects, feel free to email y at [email protected] with *scientific python translations* in the subject line or make a post in the **#translations** channel on the [Scientific Python Discord Server](https://discord.com/invite/vur45CbwMz). Languages with a large population of speakers with no to low English proficiency will be priortized, but any language with enthusiastic translators who are committed to keeping translations up to date may be considered.
7+
8+
Potential translators who pass a vetting process will be given invitations to the Scientific Python Crowdin organization and on-boarded into the translation workflow.
9+
10+
There are several ways contributors can help:
11+
12+
* Make translations of web site content.
13+
* Proofread existing translations.
14+
* Make glossaries of technical terms.

content/data.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
This is the content of data.txt.

content/example.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
def foo(x):
2+
return x**2

content/faq.md

Lines changed: 104 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,104 @@
1+
---
2+
title: "Frequently Asked Questions"
3+
draft: false
4+
---
5+
6+
##### What is the intended scope for the content to be translated?
7+
8+
At least to start, the plan is to limit the translations to the brochure websites of the [Scientific Python Core Projects](https://scientific-python.org/specs/core-projects/). By a brochure website, we mean the main landing page for the project plus subpages containing basic information about the project. Technical content such as API documentation and tutorials is considered to be out of scope.
9+
10+
Eventually, we hope to expand to translations of the most important beginner-focused tutorials.
11+
12+
##### Where should the translations be published?
13+
14+
We hope that official translations can be published directly on the core project web pages, with some convenient means of switching between languages, such as the drop-down selector used for https://numpy.org. Publishing official translations directly on the web pages helps to provide the sense of inclusivity we seek, and helps establish trust in the translations from potential users.
15+
16+
##### Why should the scope for content to translate at least initially be limited to brochure websites?
17+
18+
Care must be taken to limit the burden on volunteer translators and to limit the effort needed for coordinating the translation effort. For this project, we believe that the amount of content selected for a project should be restricted such that a competent volunteer can perform the translations in a single language in at most one to two days of work. Content which may receive frequent updates should also be avoided in order to make it easier to keep translations up-to-date. Technical documentation is often extensive, more difficult to translate, and more liable to change or be expanded upon in the future. The brochure websites ideally contain important information useful for those getting started with a project which should remain relatively static over time. The restriction to a subset of content which can be translated in one to two days gives maintainers the freedom to make a complete overhaul of their website and documentation without needing to worry that a large effort would be needed to keep translations up to date.
19+
20+
##### Can you be more specific in describing what content should be translated?
21+
22+
It may be helpful to consider the content which is currently translated for https://numpy.org/. This currently includes:
23+
24+
* The landing page, which provides:
25+
* A concise overview of what NumPy does.
26+
* An interactive shell letting users try NumPy in the browser.
27+
* Lists of other projects in the NumPy ecosystem with brief
28+
descriptions.
29+
* Links to case studies showing how NumPy can be used in real world
30+
projects.
31+
* Links to informational subpages.
32+
* Install: An overview for how to install NumPy
33+
* Learn: Links to educational resources for learning about NumPy.
34+
* Community: Information on places online and off to participate in the
35+
NumPy community.
36+
* About us: Information on the people and institutions behind NumPy.
37+
* News: Regular updates about NumPy releases and other important news
38+
related to NumPy.
39+
* Contribute: How to get started contributing to NumPy in a variety of
40+
technical and nontechnical ways.
41+
* Case Studies: Examples showing how NumPy is used in real world
42+
projects.
43+
* Other: Miscellaneous small pages: how to cite NumPy, user surveys,
44+
where to ask for help, link to press kit.
45+
46+
##### Are translations restricted to the brochure websites actually even useful?
47+
48+
At a minimum, a brochure website should give an overview of a project and what it is useful for and provide some direction for new users looking to get started. It is valuable for potential users to be able to see what a package does and whether it could be useful for them, so they can judge whether it would be worth the effort to learn to use a tool which is primarily developed and documented in a language they are unfamiliar with. Those who decide a package is worth exploring will benefit from any information which lowers the amount of thought and effort needed to get started. We believe the qualities which would make a brochure website useful in translation are the same as those which characterize a useful brochure website in general.
49+
50+
##### Why are user supplied machine translations not sufficient?
51+
52+
Machine translations can still struggle with the technical language and jargon of scientific computing. Examples include machine translation having difficulty with terms which are commonly referred to by their English names in other languages, such as Git jargon like “branch” and “commit”; and machine translation producing incorrect literal translations of technical phrases. Translators who worked on the numpy.org project have attested to these challenges. While machine translations provide a good starting point for translators, for content of this nature, it is valuable to have a human in the loop to ensure accuracy and consistent quality. In addition, publishing official translations can help make new non-English speakers feel more welcome, increasing their likelihood of participating in user communities.
53+
54+
##### How is this work supported?
55+
56+
This work is supported by the CZI Scientific Python Community and Communications Infrastructure Grant. https://scientific-python.org/doc/scientific-python-community-and-communications-infrastructure-2022.pdf. This grant supports 25% full time engineer time per year to
57+
work on translation infrastructure development and maintenance, and 15% full time engineer time per year to work on translation
58+
coordination and actual translation work.
59+
60+
At the moment, the most relevant deliverable from this grant is to publish translations into 3 or more widely used languages (e.g. Spanish, Chinese, Japanese) of the brochure websites of at least 8 Scientific Python core projects. We are also committed to providing clear documentation of the translation workflow, and eventually expanding to translations of the most important beginner-focused tutorial(s) of at least 4 core projects.
61+
62+
##### Why publish official translations instead of relying on independent community translations?
63+
64+
Community translations tend to be of varying quality and it is not uncommon for them to become unmaintained over time. However, in a sense this would be a community translation effort, but with paid staff working on translation infrastructure, finding and vetting translators, and coordinating the translations. The goal is to produce and maintain professional quality translations which project maintainers could confidently host on their project's web pages.
65+
66+
##### What languages would be involved?
67+
68+
Languages with a large population of speakers with no to low English proficiency should be prioritized in order to maximize the impact per amount of work. Any language with enthusiastic translators who are committed to keeping translations up to date can be considered though.
69+
70+
Some resources that could be helpful for prioritizing languages are:
71+
* https://www.ef.edu/epi/ with information on levels of English
72+
proficiency within different countries,
73+
* https://en.wikipedia.org/wiki/List_of_languages_by_total_number_of_speakers
74+
tabulating the number of speakers per language
75+
* https://languagerc.net/languages-by-countries/ listing common
76+
languages for different countries.
77+
78+
##### What platform will be used for managing translations?
79+
80+
We are using [Crowdin](https://crowdin.com/) to manage translations. They have generously offered a free supported enterprise account to help us in this work. Crowdin offers convenient [GitHub integration](https://support.crowdin.com/github-integration/) which makes it easier to coordinate the process of keeping translations up-to-date. Crowdin provides a convenient user interface for translators and proofreaders which integrates machine translations in order to streamline the translation process.
81+
82+
##### What work is expected from project maintainers?
83+
84+
We are committed to minimizing the work required from project maintainers. This effort would not be viable if it required substantial effort from the maintainers of individual projects. A small team of paid [Quansight Labs](https://labs.quansight.org/) staff will work on setting up translation infrastructure, recruiting and coordinating with translators, and helping to integrate translations into core project websites.
85+
86+
If maintainers of a core project agree to participate, we will create a GitHub repository in the [Scientific Python Translations](https://github.com/Scientific-Python-Translations) organization which mirrors the content of the project's brochure website. It is this mirror repository which will be synced with Crowdin; there is no need for maintainers to deal directly with Crowdin integration. We are using a GitHub actions workflow to help keep the content in these mirror repos up-to-date with the source content. Through the efforts of the translators, these mirror repos will host parallel versions of the brochure website content translated into a variety of languages, which we intend to keep up-to-date with the content of the source web pages.
87+
88+
The point where maintainer involvement will be necessary is when publishing the translations on a project's brochure website. A developer from Quansight Labs can submit a pull request setting up the machinery for publishing translations, but a maintainer will need to be involved to review this pull request. Maintainers have the choice between having translated content added directly to their repos in PRs, or having machinery set up to download translated content from the corresponding mirror repo at website build time. There are trade offs involved, with the former requiring periodic review of pull requests for updating content, and the latter requiring a greater up-front cost in reviewing a more sophisticated PR and also requiring maintainers to have sufficient trust in the quality of translations to accept them without having someone on the team review them in some way. We are also open to other suggestions for how translations can be published.
89+
90+
##### Where will users report issues related to translations?
91+
92+
Users who'd like to report a problem related to the translations of a project's website should be directed to submit an issue in the corresponding repository in the Scientific Python Translations GitHub organization. An entry can be added to each participating project's `.github/ISSUE_TEMPLATE/config.yml` that provides a link to open a new issue in this external repository for reporting problems related to translations.
93+
94+
##### What are the plans for keeping translations up to date?
95+
96+
Limiting the scope of content to translate for each project to a core set of relatively static things which a competent volunteer can translate for one language in one to two days will help in making it manageable to keep translations up-to-date. Crowdin integrations discussed earlier also help in the efforts to keep translations up-to-date. Crowdin will become aware of any changes in the project website content and notify translators that there are new strings available to translate. The key factor however, will be in fostering robust communities of volunteer translators willing to put in the work to maintain translations, and if strong enough communities develop, it may even become feasible to expand the scope of content to translate.
97+
98+
##### How will the quality of translations be verified?
99+
100+
You may have seen the [incident](https://discourse.ubuntu.com/t/announcement-ubuntu-desktop-23-10-release-image-translation-incident-now-resolved/39365) where hate speech was submitted in translations of the Ubuntu desktop-installer. Outside of deliberate acts of vandalism, maintainers may still feel weary about publishing translations on their web pages which they are unable to read and evaluate for themselves. To help ensure translations meet an acceptable standard, interested translators and proofreaders will be individually vetted and an invitation to the Scientific Python Crowdin organization will be required for them to participate. Each translated string of content should be validated by at least one trusted proofreader distinct from the translator.
101+
102+
##### What if I'm a maintainer who's read all of this and is still skeptical about participating?
103+
104+
Of course, any project’s team of maintainers is free to decide not to participate. Maintainers who agree that publishing these translations is a worthy and practical goal should see this as an opportunity to get external help to achieve it without having to spend scarce maintainer bandwidth on setting up infrastructure, and organizing and coordinating with translators. We will start with projects that are more enthusiastic and may reach out to more skeptical maintainer teams again to give them a chance to re-evaluate after we establish a track record.

content/news.md

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
---
2+
title: News
3+
authors: ["Website Team"]
4+
newsHeader: "Scientific Python Translations website launched!"
5+
date: 2024-05-22
6+
draft: false
7+
---
8+
9+
### Scientific Python Translations website launched.
10+
_May 22, 2024_
11+
12+

content/shortcodes.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
title: Shortcodes summary placeholder
3+
---
4+
5+
Please refer to [the theme shortcode description list](https://theme.scientific-python.org/shortcodes/).

content/shortcodes.md.stub

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
title: Shortcodes summary placeholder
3+
---
4+
5+
Please refer to [the theme shortcode description list](https://theme.scientific-python.org/shortcodes/).

0 commit comments

Comments
 (0)